大数相加

最近没什么事,决定把杭电没提交的题一道道的做过去......= =

A + B Problem II

简单的大树相加的题目,以前一直觉得感觉大数相加好麻烦,都没好好的做一下,认真去写还是觉得比较简单(((o(*゚▽゚*)o)))

代码如下:

TIME:0ms     Memory:260K

 1 #include <iostream>

 2 #include <cstring>

 3 using namespace std;

 4 

 5 int main()

 6 {

 7     int n,i=0,k;

 8     scanf("%d",&n);

 9     while(n--)

10     {

11         i++;

12        char a[1010],b[1010],c[1010];

13         scanf("%s%s",a,b);

14         printf("Case %d:\n",i);

15         getchar();

16         printf("%s + %s = ",a,b);

17         int lentha,lenthb,maxx,i,j,xa,xb,x;

18         lentha=strlen(a),xa=lentha;

19         lenthb=strlen(b),xb=lenthb;

20         maxx=max(lentha,lenthb);

21         x=maxx+1;

22         memset(c,0,sizeof(c));

23         for(j=0;j<maxx;j++)

24         {

25             xa--,xb--,x--;

26             int y;

27             char xxa,xxb;

28             if(xa<0) xxa='0'; else xxa=a[xa];

29             if(xb<0) xxb='0'; else xxb=b[xb];

30             y=c[x]+((xxa-'0')+(xxb-'0'));

31             if(y>=10)

32             {

33                 y=y-10;

34                 c[x]=y+'0';

35                 c[x-1]=1;

36             }

37             else c[x]=y+'0';

38         }

39        if(c[0]!=0) c[0]=c[0]+'0';

40         if(c[0]==0)

41         {

42             for(k=0;k<maxx;k++)

43                 c[k]=c[k+1];

44             c[maxx]=0;

45         }

46          printf("%s\n",c);

47         if(n!=0) printf("\n");

48     }

49     return 0;

50 }

 

 

你可能感兴趣的:(大数相加)