สมมติว่าเรามีจำนวนเต็ม n เราต้องคืนค่าจำนวนเต็มที่ n หลังจากปฏิบัติตามการดำเนินการนี้:เริ่มจากจำนวนเต็ม 1 ลบจำนวนเต็มที่มี 9 เช่น 9, 19, 29... ดังนั้นตอนนี้เราจะมีลำดับจำนวนเต็มใหม่เช่น 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, ... เราต้องจำไว้ว่า 1 จะเป็นจำนวนเต็มแรก
ดังนั้นหากอินพุตเท่ากับ 9 เอาต์พุตจะเป็น 10
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ยกเลิก :=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