ตัวเลขที่แสดงเป็นอาร์เรย์จะเก็บตัวเลขแต่ละหลักของตัวเลขไว้ในองค์ประกอบเดียวของอาร์เรย์ ความยาวของอาร์เรย์เท่ากับจำนวนหลักในอาร์เรย์ เช่น ความยาว =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