微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数加法

#include <iostream> #include <cstring> #include <cstdio> using namespace std; char str1[10000002],str2[10000002],result[10000010]; short add[10000000]; void bignumadd(char str1[],char str2[],char result[]) {      long   k=0,i,j;      long  leng1 = strlen(str1);      long  leng2 = strlen(str2);      memset(add,sizeof(add));      for(i=leng1-1,j=leng2-1;i>=0&&j>=0;i--,j--) //做加法操作      {         add[k++] = (str1[i]-'0')+(str2[j]-'0');      }       if(leng1>leng2)       {            for(j=i;j>=0;j--)            add[k++] = str1[j]-'0';       }       else       {            for(i=j;i>=0;i--)           add[k++] = str2[i]-'0';       }       for(i=0;i<k;i++)//该进位的进位       {            if(add[i]>=10)            {                 add[i+1] += (add[i]/10);                 add[i]%=10;            }       }       long long l=0;       if(add[k]>0)//最高位产生了进位       {            for(i=k;i>=0;i--)            {                 result[L++] = add[i]+'0';            }       }       else       {            for(i=k-1;i>=0;i--)            {                 result[L++] = add[i]+'0';            }       }      result[l]='\0'; } int main() {      scanf("%s%s",str1,str2);      bignumadd(str1,str2,result);      printf("%s\n",result);     return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐