问题描述
在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263。要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算。
现在输入两个整数,请输出它们的和。
输入格式
两行,每行一个整数,每个整数不超过1000位
输出格式
一行,两个整数的和。
样例输入
15464315464465465
482321654151
样例输出
15464797786119616
数据规模和约定
每个整数不超过1000位
分析:1.模拟竖式加法,依次从往左加
2.如果刚开始两位数字位数不一样,短的用0补上,最后一次加法,如果有进位也要加上~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <iostream> #include <string> using namespace std; string add(string s1, string s2) { int len1 = s1.length(), len2 = s2.length(); if (len1 < len2) { string t(len2 - len1, '0'); s1 = t + s1; } else if (len2 < len1) { string t(len1 - len2, '0'); s2 = t + s2; } string ans = s1; int car = 0; for (int i = s1.length() - 1; i >= 0; i--) { ans[i] = (s1[i] - '0' + s2[i] - '0' + car) % 10 + '0'; car = (s1[i] - '0' + s2[i] - '0' + car) / 10; } if (car) ans = (char) (car + '0') + ans; return ans; } int main() { string s1, s2; cin >> s1 >> s2; cout << add(s1, s2); return 0; } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼