描述
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
c++语言代码:
#include<cstdio> #include<cstdlib> #include<string> #include<string.h> #include<iostream> using namespace std; const int MAX=1001; void getdigit(int *a,char *s) { int len=strlen(s); for(int i=0;i<MAX;++i) *(a+i)=0; for(int i=0;i<len;++i) *(a+len-1-i)=*(s+i)-'0'; } void multiply(int *a,int *b,int *c) { for(int i=0;i<2*MAX;++i) *(c+i)=0; for(int i=0;i<MAX;++i) //for(int j=0;j<MAX;++j) *(c+i)+=*(a+i)+ *(b+i); for(int i=0;i<2*MAX-1;++i) { *(c+i+1)+=*(c+i)/10;*(c+i)=*(c+i)%10;} } int main() {int n,t=0; char s1[MAX], s2[MAX]; int a[MAX],b[MAX],c[2*MAX]; cin>>n; while(n--) { ++t; int k=2*MAX-1; cin>>s1>>s2; getdigit(a,s1); getdigit(b,s2); multiply(a,b,c); cout<<"Case "<<t<<":"<<endl; cout<<s1<<" + "<<s2<<" = "; while(c[k]==0) k--; for(int i=k;i>=0;--i) cout<<c[i]; cout<<endl; } return 0; }
java代码:import java.math.*; import java.util.*; public class Main{ public static void main(String[]args){ Scanner in=new Scanner(System.in); int n; n=in.nextInt(); for(int i=1;i<=n;i++) { BigInteger a=in.nextBigInteger(); BigInteger b=in.nextBigInteger(); BigInteger c=a.add(b); System.out.println("Case "+i+":"); System.out.println(a+" + "+b+" = "+c); } } }