สมมติว่าเรามีจำนวนเต็ม 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