- 高精度加法
我是题解,快点我
- 2025-7-7 17:34:47 @
#include<bits/stdc++.h>
using namespace std;
string add(string a, string b) {
int la = a.size(), lb = b.size(), f = 0;
string ans;
while (la || lb || f) {
int t = (la ? a[--la] - '0' : 0) + (lb ? b[--lb] - '0' : 0) + f;
f = t / 10;
t %= 10;
ans = ans + char(t + '0');
}
reverse(ans.begin(), ans.end());
return ans;
}
int main(){
string a,b,ans;
cin>>a>>b;
cout<<add(a,b)<<endl;
return 0;
}
1 条评论
-
-
// 高精度加法 #include<bits/stdc++.h> using namespace std; const int N = 10010; //常量 char a1[N], b1[N]; int a[N], b[N], c[N]; int main(){ // 1. 输入数字 cin >> a1 >> b1; // cout << a1 << endl << b1 ;//测试 //2.反转存储 int lena = strlen(a1), lenb = strlen(b1); for(int i = 0; i < lena; i++){ a[i] = a1[lena - 1 - i] - '0'; } for(int i = 0; i < lenb; i++){ b[i] = b1[lenb - 1 -i] - '0'; } //模拟加法 叠加数组 int lenc = max(lena, lenb); for(int i = 0; i < lenc; i++){ c[i] += a[i]+b[i]; if(c[i] > 9){ //进位 c[i+1]++; c[i] %= 10; } } // 倒序输出 if(c[lenc]) lenc++; // 输出前判断长度有没有增加 for(int i = lenc - 1; i >= 0; i--){ cout << c[i]; } return 0; }
- 1
信息
- ID
- 627
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- (无)
- 递交数
- 129
- 已通过
- 42
- 上传者