Input Specification:
The first line of the input gives the positive number of test cases, T (<=10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.
Output Specification:
For each test case, output in one line "Case #X: true" if A+B>C, or "Case #X: false" otherwise, where X is the case number (starting from 1).
Sample Input:3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0
Sample Output:
Case #1: false
Case #2: true
Case #3: false
思路: 大数的加减。。。。。仅此而已
#include<iostream>
# include<cstdio>
# include<cstring>
using namespace std;
const int maxn=1000+5;
bool flag;
char a[maxn],b[maxn],c[maxn],d[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
flag=0;cin>>a>>b>>c;
int x,y,z,i,j,h,tot;
tot=0;
x=strlen(a)-1;
y=strlen(b)-1;
z=strlen(c)-1;
memset(d,'\0',sizeof(d));
for(i=0;x>=0||y>=0;i++,x--,y--)
{
if(x>=0&&y>=0) d[i]=a[x]+b[y]-'0'+tot;
if(x>=0&&y<0) d[i]=a[x]+tot;
if(x<0&&y>=0) d[i]=b[x]+tot;
tot=0;
if(d[i]>'9') {d[i]-=10;tot=1;}
}
if(tot==1) d[i]='1';
h=strlen(d)-1;
if(h>z)
cout<<">"<<endl;
else if(h<z)
cout<<"<"<<endl;
else
{
for(j=0,i=h;j<=z||i>=0;j++,i--)
{
if(d[i]>c[j])
{cout<<">"<<endl;
break;
}
else if(d[i]<c[j])
{
cout<<"<"<<endl;
break;
}
if(j==z) flag=1;
}
if(flag) cout<<"="<<endl;
}
}
return 0;
}