P1401 [入门赛 #18] 禁止在 int 乘 int 时不开 long long

[入门赛 #18] 禁止在 int 乘 int 时不开 long long

题目描述

在比赛中,根据数据范围,分析清楚变量的取值范围,是非常重要的。int 类型变量与 int 类型变量相乘,往往可能超出 int 类型可以表示的取值范围。

现在,给出两个 int 类型变量 x , y x,y x,y 及其取值范围,请问 x × y x\times y x×y 的值是否可能超过 int 类型可以表示的范围?

提示:int 类型可以表示的范围为 [ − 2147483648 , 2147483647 ] [-2147483648, 2147483647] [2147483648,2147483647],即 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1] [231,2311]。也就是,int 类型可以表示的最小值为 − 2147483648 -2147483648 2147483648,最大值为 2147483647 2147483647 2147483647

输入格式

输入共两行。

输入的第一行为两个整数 x l , x u x_l,x_u xl,xu,表示变量 x x x 的取值范围为 x l ≤ x ≤ x u x_l \le x \le x_u xlxxu

输入的第二行为两个整数 y l , y u y_l,y_u yl,yu,表示变量 y y y 的取值范围为 y l ≤ y ≤ y u y_l \le y \le y_u ylyyu

输出格式

输出一行一个字符串:

  • 若会超过,则输出 long long int
  • 若不会超过,则输出 int

样例 #1

样例输入 #1

1 5
1 5

样例输出 #1

int

样例 #2

样例输入 #2

-2147483647 2147483647
-2147483647 2147483647

样例输出 #2

long long int

提示

数据规模与约定

  • 对于 50 % 50\% 50% 的测试数据, 0 ≤ x l ≤ x u < 2 31 0 \le x_l \le x_u < 2^{31} 0xlxu<231 0 ≤ y l ≤ y u < 2 31 0 \le y_l \le y_u < 2^{31} 0ylyu<231
  • 对于 100 % 100\% 100% 的测试数据, − 2 31 ≤ x l ≤ x u < 2 31 -2^{31} \le x_l \le x_u < 2^{31} 231xlxu<231 − 2 31 ≤ y l ≤ y u < 2 31 -2^{31} \le y_l \le y_u < 2^{31} 231ylyu<231

我的代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a,b,c,d;
signed main(){
	cin>>a>>b>>c>>d;
	if(a*c<-2147483648||a*c>2147483647||b*d<-2147483648||b*d>2147483647||a*d<-2147483648||a*d>2147483647||b*c<-2147483648||b*c>2147483647){
		cout<<"long long int";
	}else{
		cout<<"int";
	}
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值