首页 > 代码库 > HDU1002 大数相加
HDU1002 大数相加
1 #include <iostream> 2 #include <iostream> 3 #include <iomanip> 4 #include<string> 5 #include<cstring> 6 using namespace std; 7 8 string A , B; 9 char a[1010];10 char b[1010];11 char result[1010];12 13 int max(int a,int b)14 {15 return a>b?a:b;16 }17 int main()18 {19 int T;20 cin>>T;21 for(int j=1;j<=T;j++)22 {23 memset(a,‘0‘,sizeof(a));24 memset(b,‘0‘,sizeof(a));25 memset(result,‘0‘,sizeof(a));26 cin>>A>>B;27 int len1=A.size(),len2=B.size();28 int m=len1,n=len2;29 for(int i=0;i<m;i++)30 {31 a[i]=A.at(len1-1);32 len1--;33 }34 for(int i=0;i<n;i++)35 {36 b[i]=B.at(len2-1);37 len2--;38 }39 int k=max(m,n);40 41 42 int t=0;//用于向前进位;43 for(int i=0;i<=k;i++){44 if((a[i]-‘0‘)+(b[i]-‘0‘)+t>=10) result[i]=(char)((a[i]-‘0‘)+(b[i]-‘0‘)+t-10+‘0‘),t=1;45 else result[i]=(char)((a[i]-‘0‘)+(b[i]-‘0‘)+t+‘0‘),t=0;46 }47 48 cout<<"Case "<<j<<":"<<endl;49 cout<<A<<" + "<<B<<" = ";50 if(result[k]==‘0‘){51 for(int i=k-1;i>=0;i--) cout<<result[i];52 }53 else{54 for(int i=k;i>=0;i--) cout<<result[i];55 }56 cout<<endl;57 if(j!=T) cout<<endl;58 59 }60 return 0;61 }
由于数字位数可达1000之多,即使long long也没法计算,那么只能用数组来进行存储,不断进位来解决问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。