Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cộng 1 vào số biểu diễn bằng mảng chữ số C++


Số lớn được lưu dưới dạng mảng: mỗi phần tử là 1 chữ số, phần tử đầu = chữ số hàng cao nhất.

Ví dụ: 2399 → {2,3,9,9}. Cộng 1 → {2,4,0,0}.

Thuật toán

  • Cộng 1 vào phần tử cuối.
  • Xử lý nhớ (carry) lan ngược về đầu.
  • Nếu vẫn còn nhớ sau phần tử đầu → chèn 1 vào đầu.

Chương trình C++ (dùng vector)

#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] %= 10;
    
    for (int i = n-2; i >= 0 && carry; i--) {
        a[i] += carry;
        carry = a[i] / 10;
        a[i] %= 10;
    }
    if (carry) a.insert(a.begin(), 1);
}

int main() {
    vector<int> num = {2, 3, 9, 9};
    cout << "So goc: ";
    for (int d : num) cout << d;
    
    addOne(num);
    cout << "\nSau khi cong 1: ";
    for (int d : num) cout << d;
    return 0;
}

Kết quả

So goc: 2399
Sau khi cong 1: 2400