信息学奥赛一本通 1168:大整数加法
作者:互联网
时间限制: 1000 ms 内存限制: 65536 KB 提交数: 72955 通过数: 24357 【题目描述】求两个不超过200位的非负整数的和。 【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。 【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 【输入样例】22222222222222222222 33333333333333333333 【输出样例】55555555555555555555 |
更多信息学奥赛学习资料
链接:https://pan.baidu.com/s/1IBH3uj7OdE6gx16RYxZCtw?pwd=ip6d
提取码:ip6d
#include<iostream> #include<cstring> #define N 210 using namespace std; int as[N],bs[N],lena,lenb; string a,b; int main(){ cin>>a>>b; lena=a.size(); lenb=b.size(); for(int i=0;i<lena;i++)as[i]=a[lena-i-1]-'0'; for(int i=0;i<lenb;i++)bs[i]=b[lenb-i-1]-'0'; int length=max(lena,lenb); for(int i=0;i<length;i++)as[i]+=bs[i]; for(int i=0;i<length;i++){ if(as[i]>9){ as[i+1]++; as[i]-=10; if(i==length-1)length++; } } while(length&&as[length]==0)length--; for(int i=length;i>=0;i--)cout<<as[i]; cout<<endl; }
标签:信息学,ip6d,200,int,非负,1168,length,奥赛,size 来源: https://www.cnblogs.com/sd129/p/16652215.html