Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 9 제거

<시간/>

정수 n이 있다고 가정하고 다음 작업을 수행한 후 n번째 정수를 반환해야 합니다. 정수 1에서 시작하여 9, 19, 29와 같이 9를 포함하는 정수를 제거합니다. 이제 다음과 같은 새로운 정수 시퀀스가 ​​생깁니다. 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, ... 1이 첫 번째 정수임을 명심해야 합니다.

따라서 입력이 9와 같으면 출력은 10이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • ret :=0

  • s :=1

  • n이 0이 아닌 동안 수행 -

    • 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