HDU1002

来源:互联网 发布:淘宝hd版分类在哪里 编辑:程序博客网 时间:2024/06/05 19:26
<pre name="code" class="cpp">#include<iostream>using namespace std;int main(){int t;cin>>t;for(int i=1;i<=t;i++){string str1,str2;cin>>str1>>str2;//将数字以字符串的形式输入 string s1=str1,s2=str2;//记录原字符串 int len1=str1.size(),len2=str2.size();//取得字符串的长度 if(len1<=len2) //确保len1是较大数,len2较小 。str1是较长的字符串,str2是较短的字符串 {string ss;ss=str1;str1=str2;str2=ss;int le=0;le=len1;len1=len2;len2=le;}int num1[len1],num2[len2];int sum[len1+1];for(int j=0;j<len1;j++)//将 str1,str2存入int num1,num2 数组内 {num1[j]=str1[j]-'0';}for(int j=0;j<len2;j++){num2[j]=str2[j]-'0';}int carry=0,len=len1-1;for(int j=len2-1;len>=0;j--,len--)//从str2(较短)的最后一位开始相加,直到遍历完str1(较长) {if(j>=0) //str2还没遍历完的时候 {sum[len]=(num1[len]+num2[j]+carry)%10;carry=(num1[len]+num2[j]+carry)/10;}else //str2已经遍历结束 {sum[len]=(num1[len]+carry)%10;carry=(num1[len]+carry)/10;}}cout<<"Case "<<i<<":"<<endl;cout<<s1<<" + "<<s2<<" = ";if(carry!=0) {cout<<carry;                            }for(int j=0;j<len1;j++){cout<<sum[j];}if(i==t)cout<<endl;else cout<<endl<<endl;}return 0;}



这是一道大数加法,由于long long 无法存储下数字,所以改用string存储。


0 0