A + B Problem II(大整数加法)

来源:互联网 发布:Linux sl rl 休眠 编辑:程序博客网 时间:2024/05/16 05:42

题目链接:点击打开链接

题意:给出两个位数不大于1000的数,求和;

题解:

        用数组存,之后按照加法的运算规则进行运算,得出一个数组,这个数组就是答案;


#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#include<cstring>#include<string>using namespace std;int main(){    int T; cin>>T;    int P=T; int kase=0;    while(T--){        int a[1000+100];        int b[1000+100];        memset(a,0,sizeof(a));        memset(b,0,sizeof(b));        string s1,s2;        cin>>s1>>s2;        int len1=s1.length();        int len2=s2.length();        for(int i=len1-1;i>=0;i--) a[len1-i-1]=s1[i]-'0';        for(int j=len2-1;j>=0;j--) b[len2-j-1]=s2[j]-'0';        int p=max(len1,len2);        if(len1!=p)            for(int i=len1;i<p;i++) a[i]=0;        else if(len2!=p)            for(int i=len2;i<p;i++) b[i]=0;        else{            a[p]=0; b[p]=0;        } //相差的位置存0,便于相加;        int s[1000+100];        int c=0;        memset(s,0,sizeof(s));        int t=0;        cout<<"Case "<<++kase<<":"<<endl;        cout<<s1<<" + "<<s2<<" = ";        for(int i=0;i<p;i++){            int k=a[i]+b[i]+c;            if(i==p-1){                if(k>=10){                    s[t++]=k%10;                    s[t++]=k/10;                }                else s[t++]=k;            }            else{                s[t++]=k%10;                c=k/10;            }        }        for(int i=t-1;i>=0;i--) cout<<s[i];        if(kase==P) cout<<endl;        else cout<<endl<<endl;    }    return 0;}


原创粉丝点击