代码错误(新手求教)c++
  • 板块学术版
  • 楼主Yang2023
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/10 14:59
  • 上次更新2023/11/3 10:45:16
查看原帖
代码错误(新手求教)c++
1036618
Yang2023楼主2023/7/10 14:59

新手求教(急) 题目:(高精度加法)

输入两个整数 A、B ,并输出它们的和。已知A 、B 都不超过1000位。

输入格式 输入分两行

输出格式 输出和

样例输入 11111111111111111111111111111111111111 22222222222222222222222222222222222229 样例输出 33333333333333333333333333333333333340 问题提示 不考虑输入数据为负数的情况

请问一下怎么改,在不改变代码整体的情况下

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

long long ans[1010],x[1005],y[1005];//答案初始为0
int main() {
	string a,b;
	cin>>a>>b;
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());//先倒叙,最小位对齐不容易出错
	for(int i =0;i<a.size();i++){//装在数组里
		x[i] = int(char(a[i]))-'0';


	}
	for(int i =0;i<b.size();i++){
		y[i] = int(char(b[i]))-'0';


	}
	for(int i = 0;i<=max(a.size(),b.size());i++){//和
		ans[i] += x[i]+y[i];
		if(ans[i]>9){
			ans[i] = ans[i]%10;
			ans[i+1] += 1;
		}
	}
	bool sp = 0;
	for(int i = max(a.size(),b.size())-1;i>=0;i--){//从第一个不是0的地方打印
		if(ans[i]!='0'){
			sp = 1;
		}
		if(sp){
			cout<<ans[i];
		}
	}
	if(!sp){//如果一直没打印就证明是肯定是0,0+0
		cout<<'0';
	}
}
2023/7/10 14:59
加载中...