码迷,mamicode.com
首页 > 其他好文 > 详细

问题 R: A+B

时间:2016-07-17 08:48:57      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

    I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.

    A,B must be positive.

输入

The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.

输出

For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation.

样例输入

2
1 2
112233445566778899 998877665544332211

样例输出

Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
#include<stdio.h>
#include<string.h>
int main() {
    int i,j,k,m,n,t,a[1002],len;
    char s1[1001],s2[1001];
    scanf("%d",&t);
    for(n=0;n<t;n++) {
        scanf("%s%s",s1,s2);
        len=(strlen(s1)>=strlen(s2)?strlen(s1):strlen(s2));
            for(i=0;i<len+1;i++) 
                a[i]=0;
                m=0;
                for(i=strlen(s1)-1,j=strlen(s2)-1;i>=0&&j>=0;i--,j--){
                    k=s1[i]+s2[j]-2*0;
                    if(k>=10) {
                        a[m++]+=k%10;
                        a[m]++;
                    }
                    else {
                        a[m++]+=k;
                        if(a[m-1]>=10) {
                            a[m]++;
                            a[m-1]%=10;
                        }
                    }
                }
                if(i>=0) {
                    for(j=i;j>=0;j--) {
                        k=s1[j]-0;
                        if(k>=10) {
                            a[m++]+=k%10;
                            a[m]++;
                        }
                        else{
                            a[m++]+=k;
                            if(a[m-1]>=10) {
                            a[m]++;
                            a[m-1]%=10;
                            }
                        }
                    }
                }
                else if(j>=0) {
                    for(i=j;i>=0;i--){
                        k=s2[i]-0;
                        if(k>=10) {
                            a[m++]+=k%10;
                            a[m]++;
                        }
                        else {
                            a[m++]+=k;
                            if(a[m-1]>=10) {
                                a[m]++;
                                a[m-1]%=10;
                            }
                        }
                    }
                }
    printf("Case %d:\n",n+1);
    printf("%s + %s = ",s1,s2);
    if(a[m]>0) 
        m++;
        for(i=m-1;i>=0;i--) 
            printf("%d",a[i]);
            if(n!=t-1) 
                printf("\n");
    }
    return 0;
}

 

问题 R: A+B

标签:

原文地址:http://www.cnblogs.com/tong69/p/5677206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!