#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 条评论

  • @ 2025-9-12 16:21:08
    // 高精度加法 
    #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
    上传者