大数相加

来源:互联网 发布:7u分享网络注册 编辑:程序博客网 时间:2024/06/05 15:51

用数组装,再倒过来。

#include <iostream>#include <string.h>#include <fstream>using namespace std;int max(int a,int b){    return a>b?a:b;}void reverse(char *p,int n){    char temp;    for(int i=0;i<n/2;i++)    {        temp=p[i];        p[i]=p[n-1-i];        p[n-1-i]=temp;    }}int main(){    char str1[202],str2[202],ans[202];    int n1,n2,weishu;    cin >> str1>>str2;    n1=strlen(str1);n2=strlen(str2);    reverse(str1,n1);    reverse(str2,n2);    for(int i=0;i<n1;i++)    {        ans[i]=str1[i];    }    for(int i=n1;i<202;i++)ans[i]='0';    for(int i=0;i<n2;i++)    {        if(i==2)continue;        ans[i]+=str2[i]-'0';    }    weishu=max(n1,n2);    ans[weishu]='0';    for(int i=0;i<weishu;i++)        {        if(ans[i]>'9')        {            ans[i]-=10;            if(i!=1){ans[i+1]++;}            else{ans[i+2]++;}            if(i==weishu-1){weishu++;}        }        }    ans[weishu]='\0';    reverse(ans,weishu);    cout<<ans;    return 0;}


0 0
原创粉丝点击