A + B Problem II
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 81 Accepted Submission(s) : 33
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
Input
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.
Output
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. 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
#include<iostream>
#include<sstream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define maxn 2100
using namespace std;
struct bign
{
int len,s[maxn];
bign()
{
memset(s,0,sizeof(s));
len=1;
}
bign(int num) {*this=num;}
bign(const char* num){*this=num;}
bign operator = (int num)
{
char s[maxn];
sprintf(s,"%d",num);
*this=s;
return *this;
}
bign operator = (const char* num)
{
len=strlen(num);
int i;
for(i=0;i<len;i++) s[i]=num[len-i-1]-'0';
return *this;
}
string str() const
{
string res = "";
int i;
for(i=0;i<len;i++) res=(char)(s[i]+'0')+res;
if(res=="") res="0";
return res;
}
void clean() {while(len>1&&!s[len-1]) len--;}
bign operator + (const bign& b) const
{
bign c; c.len=0;
int i,g;
for(i=0,g=0;g||i<max(len,b.len);i++)
{
int x=g;
if(i<len) x+=s[i];
if(i<b.len) x+=b.s[i];
c.s[c.len++]=x%10;
g=x/10;
}
return c;
}
};
istream& operator >> (istream &in, bign& x)
{
string s;
in >> s;
x = s.c_str();
return in;
}
ostream& operator << (ostream &out, const bign& x)
{
out << x.str();
return out;
}
int main()
{
int n,i;
bign a,b,c;
cin>>n;
for (i=1;i<=n;i++)
{
cin>>a>>b;
c=a+b;
cout<<"Case"<<' '<<i<<':'<<endl;
cout<<a<<' '<<'+'<<' '<<b<<' '<<'='<<' '<<c<<endl;
if (i!=n) cout<<endl;
}
return 0;
}
#include<sstream>
#include<string.h>
#include<stdio.h>
#include<algorithm>
#define maxn 2100
using namespace std;
struct bign
{
int len,s[maxn];
bign()
{
memset(s,0,sizeof(s));
len=1;
}
bign(int num) {*this=num;}
bign(const char* num){*this=num;}
bign operator = (int num)
{
char s[maxn];
sprintf(s,"%d",num);
*this=s;
return *this;
}
bign operator = (const char* num)
{
len=strlen(num);
int i;
for(i=0;i<len;i++) s[i]=num[len-i-1]-'0';
return *this;
}
string str() const
{
string res = "";
int i;
for(i=0;i<len;i++) res=(char)(s[i]+'0')+res;
if(res=="") res="0";
return res;
}
void clean() {while(len>1&&!s[len-1]) len--;}
bign operator + (const bign& b) const
{
bign c; c.len=0;
int i,g;
for(i=0,g=0;g||i<max(len,b.len);i++)
{
int x=g;
if(i<len) x+=s[i];
if(i<b.len) x+=b.s[i];
c.s[c.len++]=x%10;
g=x/10;
}
return c;
}
};
istream& operator >> (istream &in, bign& x)
{
string s;
in >> s;
x = s.c_str();
return in;
}
ostream& operator << (ostream &out, const bign& x)
{
out << x.str();
return out;
}
int main()
{
int n,i;
bign a,b,c;
cin>>n;
for (i=1;i<=n;i++)
{
cin>>a>>b;
c=a+b;
cout<<"Case"<<' '<<i<<':'<<endl;
cout<<a<<' '<<'+'<<' '<<b<<' '<<'='<<' '<<c<<endl;
if (i!=n) cout<<endl;
}
return 0;
}