求两个不超过 200200 位的非负整数的和。
输入格式
有两行,每行是一个不超过 200200 位的非负整数,可能有多余的前导 00。
输出格式
一行,即相加后的结果。结果里不能有多余的前导 00,即如果结果是 342342,那么就不能输出为 03420342。
样例输入
22222222222222222222 33333333333333333333
样例输出
55555555555555555555
原题的地址https://nanti.jisuanke.com/t/T1098
代码:
#include <iostream> #include<string> using namespace std; int main() { string str1,str2; cin >> str1 >> str2;//保存两个数字 int d = 0;//进位 int str3[210]; int i = 0; int a, b; for (;i < str1.length() ||i< str2.length();++i) { if (i >= str1.length()) { a = 0; } else a = str1[str1.length() - 1 - i] - (int)'0'; if (i >= str2.length()) { b = 0; }else b = str2[str2.length() - 1 - i] - (int)'0'; int c = a + b+d; if (c >= 10) d = 1; else d = 0; str3[i] = c%10; } if (d == 1) { str3[i] = 1; i++; } bool flag = 0;//判断第一个数是不是0 for (int j = i-1;j >=0;--j) { if (str3[j] != 0 || flag) { flag = 1; cout << str3[j]; } } if (!flag) cout << 0;//这点千万不能忘记 return 0; }
有任何问题可以下面留下你的评论或者加我QQ274062198