c++60pts,参考某篇题解后打出来的代码
查看原帖
c++60pts,参考某篇题解后打出来的代码
495599
CSZD楼主2022/10/1 11:44
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int a[1010],b[1010],sum[1010]; 
int main()
{
	string s1,s2; 
	cin>>s1>>s2;
	a[0]=s1.length();
	b[0]=s2.length();//长度 
	for(int i=1;i<=a[0];i++)a[i]=s1[a[0]-i]-48;
	for(int i=1;i<=b[0];i++)b[i]=s2[a[0]-i]-48;//转为数字
	int i,flag=0;//没问题 
	for(i=1;i<=max(a[0],b[0])+1;i++)//
	{
		sum[i]+=a[i]+b[i];//“+”可能有已经进一的情况
		if(sum[i]>=10)//满十进一 
		{
			sum[i]%=10;
			sum[i+1]++;
		}
	}
	sum[0]=i;//新长度 
	if(sum[i+1]>0)sum[0]++;//如果多一位,数位加一 
	for(int i=sum[0];i>=1;i--)
	{
		if(flag==0&&sum[i]==0)continue;//还没有输出之前数位里有零(即前导零)就跳过 
		flag=1;//无前导零 
		cout<<sum[i];//输出 
	}
	if(flag==0)cout<<0;//只有零 
	return 0;
}

写注释是为了让自己思路不中断

输入

11111111111111111111111111 9999999999999999999999999999999999

正确输出 10000000011111111111111111111111110

我的输出

-49-49-49-49-48-48-48-4711111111111111111111111110

感谢解答QwQ

2022/10/1 11:44
加载中...