大数加法
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:2085
测试通过:543
描述
求两个非负整数(1000位以内)的和。
输入
两个非负整数(1000位以内),以空格分隔。
输出
两个非负整数的和。
样例输入
111111111111 222222222222
样例输出
333333333333
提示
题目来源
GUOJ
#include<iostream> #include<string> using namespace std; int main() { char str[1001]; char str2[1001]; for(int i=0;i<1001;i++){ str[i]='0'; str2[i]='0'; } int index=1000; int value=0; string stp; cin>>stp; value=stp.length()-1; while(value>=0){ str[index--]=stp[value--]; } int index2=1000; string stp2; cin>>stp2; value=stp2.length()-1; while(value>=0){ str2[index2--]=stp2[value--]; } char result[1001]; int plus=0; for(int i=1000;i>=0;i--){ int temp=((str[i]-'0')+(str2[i]-'0')+plus)%10; plus= ((str[i]-'0')+(str2[i]-'0')+plus)/10; result[i]=(char)temp+'0'; } int pos=0; while(result[pos]=='0'){ pos++; } for(;pos<1001;pos++) cout<<result[pos]; cout<<endl; return 0; }