你知道 int 与 long long 吗?
在比赛中,根据数据范围,分析清楚变量的取值范围,是非常重要的。int 类型变量与 int 类型变量相乘,往往可能超出 int 类型可以表示的取值范围。
现在,给出两个 int 类型变量 $x,y$ 及其取值范围,问 $x\times y$ 的值是否可能超过 int 类型可以表示的范围?
不定组输入。
对于每一组输入,第一行为两个整数 x1,x2,表示变量 $x$ 的取值范围为 x1 $\leqslant $ x $\leqslant $ x2。
第二行为两个整数 y1,y2,表示变量 $y$ 的取值范围为 y1 $\leqslant $ y $\leqslant $ y2。
每一组输出一个字符串:
we should use long long
;we should use int
。1 5
1 5
-2147483647 2147483647
-2147483647 2147483647
we should use int
we should use long long
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<memory.h>
typedef long long ll;
int main()
{
ll a,b,c,d;
int e,f,g,h;
while (~scanf("%d%d%d%d",&a,&b,&c,&d))
{
e = a;f = b;g = c;h = d;
if (a * c != e * g || b * d != f * h)
printf("we should use long long\n");
else
printf("we should use int\n");
}
return 0;
}
int 类型可以表示的范围为 $[-2147483648, 2147483647]$,即 $[-2^{31},2^{31}-1]$。也就是,int 类型可以表示的最小值为 $-2147483648$,最大值为 $2147483647$。