题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1047
题目大意:T组数据。每组给出n个大数,输出他们的和
关键思想:高精度,格式控制
代码如下:
#include <iostream> #include <memory.h> using namespace std; int a[102][110]; int ans[110]; int cnt=0; bool flag;//处理前导零 void solve(){ int sum,c=0; for(int i=0;i<=110;i++){//计算每一列,每一位 sum=0; for(int j=0;j<=cnt;j++)//计算每个数的这一位 sum+=a[j][i]; sum+=c; c=sum/10; ans[i]=sum%10; } return ; } void print(){ flag=true; for(int i=109;i>=0;i--){ if(flag){ if(ans[i]!=0 ){ flag=false; cout<<ans[i]; } } else cout<<ans[i]; } if(flag)cout<<0; return; } int main(){ int T; cin>>T; while(T--){ flag=true; memset(a,0,sizeof(a)); memset(ans,0,sizeof(ans)); string temp; while(cin>>temp&&temp!="0"){ for(int i=temp.size()-1;i>=0;i--){ a[cnt][temp.size()-1-i]=temp[i]-'0'; } cnt++; } solve(); print(); if(T!=0)cout<<endl<<endl;//格式略坑 else cout<<endl; } return 0; }