<—点个赞吧QwQ
宣传一下算法基础课整理{:target=”_blank”}
给定两个正整数(不含前导 $0$),计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
$1 \\le 整数长度 \\le 100000$
输入样例:
12
23
输出样例:
35
思路
高精度模板,超实用!!!
稍微有亿点麻烦的模拟。。。
代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
struct bigint {
int num[N];
int len;
bigint () {
memset (num,0,sizeof (num));
len = 1;
}
};
void chg (string s,bigint &a) {
int len = s.size ();
for (int i = 1;i <= len;i++) {
a.num[i] = s[len-i]-'0';
}
a.len = len;
}
bigint operator + (bigint a,bigint b) {
bigint c;
int len = max (a.len,b.len);
for (int i = 1;i <= len;i++) {
c.num[i] += a.num[i]+b.num[i];
c.num[i+1] += c.num[i]/10;
c.num[i] %= 10;
}
if (c.num[len+1] > 0) len++;
c.len = len;
return c;
}
void print (bigint a) {
for (int i = a.len;i >= 1;i--) cout << a.num[i];
cout << endl;
}
string s1,s2;
bigint a,b,c;
int main () {
cin >> s1 >> s2;
chg (s1,a);
chg (s2,b);
c = a+b;
print (c);
return 0;
}