배열로 표현되는 숫자는 배열의 단일 요소에 숫자의 각 자릿수를 저장합니다. 배열의 길이는 배열의 자릿수와 같습니다. 즉, 4자리 숫자의 경우 길이 =3입니다. 배열의 각 요소는 한 자리 숫자입니다. 숫자는 마지막 요소가 숫자의 최하위 숫자를 저장하는 방식으로 저장됩니다. 그리고 첫 번째 요소는 숫자의 최상위 숫자를 저장합니다. 예를 들어,
숫자 − 351932는 {3,5,1,9,3,2}
로 저장됩니다.이 숫자에 1을 추가하려면 배열의 마지막 요소에 1을 추가해야 하며 캐리를 전파해야 하는지 여부를 확인합니다. 마지막 비트의 숫자가 9이면 캐리가 전파되고 마지막 요소의 값은 0이 됩니다.
비트가 전파되면 (n-1) 위치의 요소가 1씩 증가하고 캐리 전파가 확인됩니다. 예를 들어
하나의 t0 {3,5,7,9}를 추가하면 {3,5,8,0}이 됩니다. 여기에서 캐리가 전파되고 7의 값이 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