Hdu1002 A+B ProblemII(大数相加模拟)
2014-02-26 19:22
323 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002
#include<iostream> #include<vector> #include<string> #include<cstring> using namespace std; int t; char a[1001],b[1001]; int sum[2000]; int la,lb,tmp; int idx(char x){ return x-'0'; } //进位以后还要复原。所以进位也不能进在a跟b上,就只能进在sum上面 int main (){ cin>>t; int c=1; while(t--){ char *ls,*ss; int l,s; cin>>a+1>>b+1;//腾出一个空位给进位 b[0]=a[0]='0'; la=strlen(a+1); lb=strlen(b+1);//注意strlen(a)返回值是0 if(la>lb) { ls=a;l=la; ss=b;s=lb; } else { ls=b;l=lb; ss=a;s=la; } memset(sum,0,sizeof(sum)); for(int i=l,j=s;j>0;i--,j--) { tmp=sum[i]+idx(ls[i])+idx(ss[j]); if(tmp>=10) { tmp-=10; sum[i-1]++; } sum[i]=tmp; } for(int i=l-s;i>=0;i--) { sum[i]+=idx(ls[i]); if(sum[i]>=10)//显然i=0的时候肯定否 { sum[i]-=10; sum[i-1]++; } } cout<<"Case "<<c++<<":\n" <<a+1<<" + "<<b+1<<" = "; if(sum[0]!=0) cout<<sum[0]; for(int i=1;i<=l;i++) cout<<sum[i]; if(t==0)//如果是最后一次输出了 cout<<endl; else cout<<endl<<endl; } return 0; }
相关文章推荐
- ACM-大数之A + B Problem II——hdu1002
- *寒假水96——A + B Problem II 【大数相加】
- HDOJ A + B Problem II 大数相加问题
- hdu 1002 A + B Problem II 大数相加
- hdu 1002 A + B Problem II(大数相加)
- hdoj1002(A+B problem II 大数相加 c语言
- hdu1002 A + B Problem II(大数相加)
- hdu 1002 A + B Problem II(大数相加)
- 杭电 1002 A + B Problem II【大数相加】
- HDU1002 A + B Problem II 大数求和
- 【杭电-oj】-1002-A + B Problem II(大数相加)
- HDU A + B Problem II(高精度大数相加)(java版)
- B - A + B Problem II HDU - 1002 (大数相加问题)
- HDU 1002 A+B Problem II 大数相加
- HDU 1002 A + B Problem II 大数相加
- HDU 1002 A + B Problem II(两个大数相加)
- HDOJ1002题A + B Problem II,2个大数相加
- HDOJ1002题A + B Problem II,2个大数相加
- 【每日一题(19)】A + B Problem II(大数相加) HDU - 1002
- HDU 1002:A + B Problem II(大数相加)