题解 P1601 【A+B Problem(高精)】
尝试挑战c++最短代码(自学的,没有借鉴)
#include <bits/stdc++.h>
using namespace std;
char a[600], b[600]; int sum[600];
int main()
{
int max,min;
cin >> a >> b;
int stra = strlen(a);
int strb = strlen(b);
if (stra >= strb) max = stra;
else max=strb;//确定长度长的
if (stra < strb) min = stra;
else min=strb;//确定长度短的
for (int i = 0;i<=max-1; i++)
{
if (min==strb&&i>=min) sum[599 - i] += int(a[stra - i - 1] - '0');
if(min==stra&&i>=min) sum[599 - i] += int(b[strb - i - 1] - '0');// 把长度长的直接扔上去
if(i<min) sum[599 - i] += int(a[stra - i - 1] - '0') + int(b[strb - i - 1] - '0');//一位一位地加
if (sum[599 - i] > 9) { sum[599 - i] = sum[599 - i] - 10; sum[598 - i]++; }//进位
}
if (sum[599 - max] != 0) cout << sum[599 - max];//最高位判定
for (int i = 600-max; i <= 599; i++) cout << sum[i];//按位输出
return 0;
}