【作业】第15课:高精度加法

潘C3班

2023-12-16 14:51:45
2023-12-29 17:51:45

信息与公告

当数字用long long都无法存放时,使用高精度方法
【例题】高精度加法a+b

string a, b;
cin >> a >> b;
int i = a.size() - 1;   // a的最低位下标
int j = b.size() - 1;  // b的最低位下标
int c = 0;               // 进位
string t;
while (i >= 0 || j >= 0) {
    int x;
    if (i >= 0 && j >= 0) {   // a和b都有对应位
        x = a[i] - '0' + b[j] - '0' + c;       //  对应位相加,再加进位
    } else if (i >= 0) {       // 仅a有对应位
        x = a[i] - '0' + c;
    } else {               // 仅b有对应位
        x = b[j] - '0' + c;
    }
    t = char(x % 10 + '0') + t;     // 和x的个位放到结果串t
    c = x / 10;                              // 和x的十位放到进位c
    i--;
    j--;
}
if (c == 1) t='1'+t;    // 最高位还有进位
cout << t;   // 输出结果
状态 题目 统计
和的最高位是多少 5 / 5 / 5
整数加小数 2 / 3 / 5