第一种
直接用double,因为double有64位,题目所给区间没有问题
#include <stdio.h>
int main()
{
int T;
int i=1;
double a,b,c;
scanf("%d",&T);
while(T--)
{
scanf("%lf %lf %lf",&a,&b,&c);
if(a+b>c)
printf("Case #%d: true\n",i);
else
printf("Case #%d: false\n",i);
i++;
}
return 0;
}
第二种
第一种其实只是投机,要是题目不限定范围呢,所以下面这种才是通法,主要思想是对加法进行模拟,将运算拆分为一位一位进行,大数问题都如此,之前我也做过一题乘法大数
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int **num = new int*[n];
for (int i = 0; i < n;++i)
{
num[i] = new int[3];
}
for (int i = 0; i < n;++i)
{
for (int j = 0; j < 3;++j)
{
cin >> num[i][j];
}
}
for (int i = 0; i < n;++i)
{
cout << "Case #" << i + 1 << ": ";
if (num[i][0] + num[i][1] > num[i][2])
{
cout << "true" << endl;
}
else
cout << "false" << endl;
}
return 0;
}