UVa 424 Integer Inquiry 大数加法

UVa 424 Integer Inquiry 大数加法

这个破题因为数组的边界问题花了我很长时间,也怪自己没有投入里面去

大数加法:
大数加法
 1#include<stdio.h>
 2#include<cstring>
 3char ans[10005];
 4char a[105];
 5int max=0;
 6void add(char *ans,char *a)
 7{
 8    int n=strlen(a),i,j,t,s;          //a 反向 
 9    for(i=0,j=n-1;i<j;i++,j--)
10    {
11      t=a[i]; a[i]=a[j]; a[j]=t;
12    }
                
13    for(i=0,t=0;i<n;i++)
14    {
15         s=ans[i]-'0'+a[i]-'0'+t;
16         ans[i]=s%10+'0';
17         t=s/10;
18    }

19    while(t)
20    {
21        s=ans[i]-'0'+t;
22        ans[i]=s%10+'0';
23        t=s/10;
24        i++;
25    }

26    if(i>max)  max=i;
27}

28int main()
29{
30    int n,i;
31    memset(ans,'0',sizeof(ans));
32    while(scanf("%s",a),strcmp(a,"0"))
33    {
34        add(ans,a);             
35    }

36   
37    n=strlen(ans);
38    for(i=max-1;i>=0;i--)
39    {
40      putchar(ans[i]);
41    }

42    putchar('\n');
43    scanf("%d",&n);
44    return 0;
45}

你可能感兴趣的:(UVa 424 Integer Inquiry 大数加法)