C++自存错题(15)a+b高精
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。a,b≤10
500
。
输出格式
输出只有一行,代表 a+b 的值。
输入输出样例
输入 #1复制
1
1
输出 #1复制
2
输入 #2复制
1001
9099
输出 #2复制
10100
说明/提示
20% 的测试数据,0≤a,b≤10
9
;
40% 的测试数据,0≤a,b≤10
18
。
#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
using namespace std;
string a, b;
int len = 0;
int a1[5000], b1[5000], c1[5000];
int carry = 0;
void qh(string a, string b) {
for (int i = a.size() - 1; i >= 0; i--) {
a1[a.size()-1-i] = a[i] - '0';
}
for (int i = b.size() - 1; i >= 0; i--) {
b1[b.size()-1-i] = b[i] - '0';
}
len = max(a.size(), b.size());
for (int i = 0; i < len; i++) {
c1[i] = a1[i] + b1[i] + carry;
carry = c1[i] / 10;
c1[i] %= 10;
if (i == len - 1 && carry > 0) {
len++;
}
}
}
int main() {
cin >> a >> b;
qh(a, b);
for (int i = len; i >=0; i--) {
if (i == len && c1[i] == 0) {
}
else {
cout << c1[i];
}
}
return 0;
}
输入格式
分两行输入。a,b≤10
500
。
输出格式
输出只有一行,代表 a+b 的值。
输入输出样例
输入 #1复制
1
1
输出 #1复制
2
输入 #2复制
1001
9099
输出 #2复制
10100
说明/提示
20% 的测试数据,0≤a,b≤10
9
;
40% 的测试数据,0≤a,b≤10
18
。
#include <iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
using namespace std;
string a, b;
int len = 0;
int a1[5000], b1[5000], c1[5000];
int carry = 0;
void qh(string a, string b) {
for (int i = a.size() - 1; i >= 0; i--) {
a1[a.size()-1-i] = a[i] - '0';
}
for (int i = b.size() - 1; i >= 0; i--) {
b1[b.size()-1-i] = b[i] - '0';
}
len = max(a.size(), b.size());
for (int i = 0; i < len; i++) {
c1[i] = a1[i] + b1[i] + carry;
carry = c1[i] / 10;
c1[i] %= 10;
if (i == len - 1 && carry > 0) {
len++;
}
}
}
int main() {
cin >> a >> b;
qh(a, b);
for (int i = len; i >=0; i--) {
if (i == len && c1[i] == 0) {
}
else {
cout << c1[i];
}
}
return 0;
}
全部评论
相关推荐
点赞 评论 收藏
分享
腾讯成长空间 5977人发布