@[kuikuidadi](/user/738213) 共有 $4$ 种情况,需要枚举。再然后 `int` 下限是 $-2147483648$。
或者你也可以用 $int$ 溢出的性质做。
求一关
by XLoffy @ 2024-08-24 10:04:59
@[kuikuidadi](/user/738213)
```cpp
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d;
int main(){
cin>>a>>b>>c>>d;
long long x=a*c,y=b*d;
long long e = a * d, f = b * c;//
if(y>2147483647||y<INT_MIN){
cout<<"long long int";
}else if(x>2147483647||x<INT_MIN){
cout<<"long long int";
}else if(e>2147483647||e<INT_MIN){//
cout<<"long long int";//
}else if(f>2147483647||f<INT_MIN){//
cout<<"long long int";//
}else cout<<"int";
return 0;
}
```
刚刚改了一下,写 $−2147483648$ 有未知原因报错就写`INT_MAX`了,能AC。
by js2024 @ 2024-08-24 10:11:16
@[kuikuidadi](/user/738213)
提供一组hack
```
-1000000000 0 1 3
```
by 210101zhaosicheng @ 2024-08-24 10:17:18
判断少了。
```cpp
#include<iostream>
using namespace std;
long long amin,amax,bmin,bmax;
int main(){
cin>>amin>>amax>>bmin>>bmax;
if(amin*bmin<-2147483648||amax*bmax>2147483647||amin*bmin>2147483647||amax*bmax<-2147483648||amin*bmax<-2147483648||amin*bmin>2147483647||amax*bmin<-2147483648||amax*bmin>2147483647){
cout<<"long long int";
}else{
cout<<"int";
}
return 0;
}
```
by wennuan2861 @ 2024-08-24 19:17:24