Giả sử chúng ta có số nguyên n, chúng ta phải trả về số nguyên thứ n sau khi thực hiện thao tác này:Bắt đầu từ số nguyên 1, loại bỏ bất kỳ số nguyên nào chứa 9 như 9, 19, 29 ... Vì vậy, bây giờ, chúng ta sẽ có một dãy số nguyên mới như 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, ... Chúng ta phải lưu ý rằng 1 sẽ là số nguyên đầu tiên.
Vì vậy, nếu đầu vào là 9, thì đầu ra sẽ là 10
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
ret:=0
-
s:=1
-
trong khi n khác 0, do -
-
ret:=ret + (n mod 9) * s
-
n:=n / 9
-
s:=s * 10
-
-
s:=s * 10
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#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)); }
Đầu vào
120
Đầu ra
143