C语言 · 大数加法

算法提高 大数加法  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  输入两个正整数a,b,输出a+b的值。
输入格式
  两行,第一行a,第二行b。a和b的长度均小于1000位。
输出格式
  一行,a+b的值。
样例输入
4
2
样例输出
6
 
 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     char a[1001],b[1001];
 6     int s[1001],d[1001];
 7     scanf("%s%s",&a,&b);
 8     memset(s,0,1001*sizeof(int));
 9     memset(d,0,1001*sizeof(int));
10     for(int i=strlen(a)-1,j=0; i>=0; i--)
11     {
12         s[j++]=a[i]-'0';
13     }
14     for(int i=strlen(b)-1,j=0; i>=0; i--)
15     {
16         d[j++]=b[i]-'0';
17     }
18     for(int i=0; i<1001; i++)
19     {
20         s[i]+=d[i];
21         if(s[i]>=10)
22         {
23             s[i]=s[i]-10;
24             s[i+1]++;
25         }
26     }
27     int i;
28     for( i=1000; i>=0; i--)
29         if(s[i])
30             break;
31         for(int j=i;j>=0;j--)
32         printf("%d",s[j]);
33     return 0;
34 }
原文地址:https://www.cnblogs.com/panweiwei/p/6442782.html