题目:
给定区间 [?2^31,2^31] 内的 3 个整数?A、B?和?C,请判断?A+B?是否大于?C。
输入格式:
输入第 1 行给出正整数?T?(≤10),是测试用例的个数。随后给出?T?组测试用例,每组占一行,顺序给出?A、B?和?C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出?Case #X: true ?如果?A+B>C,否则输出?Case #X: false ,其中?X ?是测试用例的编号(从 1 开始)。
输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false
我的代码
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
long *list1=new long[n];
long *list2=new long[n];
long *list3=new long[n];
long sum=0;
int *flag=new int[n];
for(int i=0;i<n;i++)
{
cin>>list1[i]>>list2[i]>>list3[i];
sum=list1[i]+list2[i];
if(sum>list3[i])
{
flag[i]=0;
}
else
flag[i]=1;
}
for(int i=0;i<n;i++)
{
if(flag[i]==0)
cout<<"Case #"<<i+1<<": true"<<endl;
if(flag[i]==1)
cout<<"Case #"<<i+1<<": false"<<endl;
}
return 0;
}
这道题目很常规,但是有两个点需要进行注意。其一是 [?2^31,2^31]这个区间范围,第一次在写的时候并没有注意到区间范围,ABC都为int类型,从而导致只有部分结果正确。int范围为-2^31?~ ? 2^31-1?在进行相加之后超出了int的范围,所以应当使用long,long的范围为-2^63?~ ? 2^63-1。第二点是在进行输出时候,要求是从1进行输出。
|