ตัวเลขที่แสดงเป็นอาร์เรย์จะเก็บตัวเลขแต่ละหลักของตัวเลขไว้ในองค์ประกอบเดียวของอาร์เรย์ ความยาวของอาร์เรย์เท่ากับจำนวนหลักในอาร์เรย์ เช่น ความยาว =3 สำหรับตัวเลขสี่หลัก แต่ละองค์ประกอบของอาร์เรย์เป็นตัวเลขหลักเดียว ตัวเลขถูกจัดเก็บในลักษณะที่องค์ประกอบสุดท้ายเก็บตัวเลขที่มีนัยสำคัญน้อยที่สุดของตัวเลข และองค์ประกอบแรกเก็บหลักที่สำคัญที่สุดของตัวเลข ตัวอย่างเช่น
หมายเลข − 351932 ถูกเก็บไว้เป็น {3,5,1,9,3,2}
ในการเพิ่มหมายเลขนี้คุณต้องเพิ่มหนึ่งรายการในองค์ประกอบสุดท้ายของอาร์เรย์และตรวจสอบว่าการพกพาใด ๆ จำเป็นต้องเผยแพร่หรือไม่ หากตัวเลขที่บิตสุดท้ายคือ 9 การพกพาจะถูกเผยแพร่และค่าขององค์ประกอบสุดท้ายจะกลายเป็น 0
หากบิตถูกเผยแพร่ องค์ประกอบที่ตำแหน่ง (n-1) จะเพิ่มขึ้นหนึ่งรายการ และตรวจสอบการถ่ายทอดแบบพกพา ตัวอย่างเช่น
เพิ่มหนึ่ง t0 {3,5,7,9} ให้ {3,5,8,0} ที่นี่การพกพาถูกเผยแพร่และมูลค่าเจ็ดเพิ่มขึ้นเป็น 8
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; void addone(vector<int> &a) { int n = a.size(); a[n-1] += 1; int carry = a[n-1]/10; a[n-1] = a[n-1] % 10; for (int i = n-2; i >= 0; i--) { if (carry == 1) { a[i] += 1; carry = a[i]/10; a[i] = a[i] % 10; } } if (carry == 1) a.insert(a.begin(), 1); } int main() { vector<int> num{2, 3, 9, 9}; cout<<"The original number is : "; for (int i = 0; i < num.size(); i++) cout << num[i]; cout<<endl; addone(num); cout<<"The incremented value is : "; for (int i = 0; i < num.size(); i++) cout << num[i]; return 0; }
ผลลัพธ์
The original number is 2399 The incremented value is 2400