在 C++ 中移除 9


假設我們有一個整數 n,我們必須在執行以下操作後返回第 n 個整數:從整數 1 開始,移除任何包含 9 的整數,例如 9、19、29……那麼現在,我們將得到一個新的整數序列,如 1、2、3、4、5、6、7、8、10、11、... 我們必須牢記 1 將成為第一個整數。

因此,如果輸入類似 9,那麼輸出將是 10

為了解決這個問題,我們將按照以下步驟進行操作:-

  • ret := 0

  • s := 1

  • 當 n 不為零時,執行:-

    • ret := ret + (n mod 9) * s

    • n := n / 9

    • s := s * 10

  • s := s * 10

為了更好地理解,我們來看一下以下實現:-

示例

 現場演示

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
   public:
   int newInteger(int n) {
      int ret = 0;
      lli s = 1;
      while (n) {
         ret += (n % 9) * s;
         n /= 9;
         s *= 10;
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.newInteger(120));
}

輸入

120

輸出

143

更新於:2020-07-11

196 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

上手
廣告
© . All rights reserved.