在 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 次浏览

开启您的 职业生涯

通过完成课程获得认证

上手
广告