C++从数字列表删除包含指定数字的数

假设我们有一个整数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