Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자 배열로 표현되는 숫자에 1을 더하시겠습니까?

<시간/>

배열로 표현되는 숫자는 배열의 단일 요소에 숫자의 각 자릿수를 저장합니다. 배열의 길이는 배열의 자릿수와 같습니다. 즉, 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