Week 1 # A A + B Problem II
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Week 1 # A A + B Problem II相关的知识,希望对你有一定的参考价值。
原题描述:
A - A + B Problem II
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
InputThe 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.
OutputFor 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. Output a blank line between two test cases.
Sample Input
2 1 2 112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
第二次看到这个题目了,第一次是在杭电acm上,那时侯想了用数组,不过没做出来。其实这个题目不算难,我直接定义了两个个字符型数组用来存储算数,定义一个整形数组存储值。先判断那个数组长度大.
两个字符型数组从后面相加,存储到整形数组上,如果值大于10再向前进1(不可能大于20)一直到短的那个数组为0的时候停止相加。直接把长的赋值到上面就可以了,记得进位!
用长的字符型数组长度判断整形数组的长度。然后就可以输出了。代码复杂,但是浅显易懂。
AC代码:
1 #include <iostream> 2 #include <string.h> 3 const int N=1000; 4 using namespace std; 5 int main() 6 { 7 int t,l,m,n,sum[N+1]={0}; 8 int g=1; 9 char a[N],b[N]; 10 cin>>t; 11 while(t--) 12 { 13 int i; 14 cin>>a>>b; 15 m=strlen(a); 16 n=strlen(b); 17 l=m>=n?m:n; 18 if(m<=N&&n<=N) 19 { 20 if(m>=n) 21 { 22 for(i=0;n>0;i++) 23 { 24 sum[i]=sum[i]+(a[m-1]-‘0‘)+(b[n-1]-‘0‘); 25 m--; 26 n--; 27 if(sum[i]>9) 28 { 29 sum[i]-=10; 30 sum[i+1]++; 31 } 32 } 33 for( ;m>0;i++,m--) 34 sum[i]=sum[i]+(a[m-1]-‘0‘); 35 } 36 else 37 { 38 for(i=0;m>0;i++) 39 { 40 sum[i]=sum[i]+(a[m-1]-‘0‘)+(b[n-1]-‘0‘); 41 m--; 42 n--; 43 if(sum[i]>9) 44 { 45 sum[i]-=10; 46 sum[i+1]++; 47 } 48 } 49 for( ;n>0;i++,n--) 50 sum[i]=sum[i]+(b[n-1]-‘0‘); 51 } 52 } 53 if(sum[i]==0) 54 i--; 55 cout<<"Case "<<g<<":"<<endl; 56 g++; 57 cout<<a<<" + "<<b<<" = "; 58 for( ;i>=0;i--) 59 cout<<sum[i]; 60 for(i=0;i<=l;i++) 61 sum[i]=0; 62 if(t!=0) 63 cout<<endl<<endl; 64 else cout<<endl; 65 } 66 return 0; 67 }
以上是关于Week 1 # A A + B Problem II的主要内容,如果未能解决你的问题,请参考以下文章