@[zj13516757538](/user/953621) 你的 $a\times b$,$c\times d$,$a\times d$ 和 $b\times c$ 都要判断
by xd244 @ 2024-04-06 21:11:01
你的 a×b,c×d,a×d , b×c 都要判断,不能这样做,所以要用双层循环。
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
long long x[2],y[2];
cin >> x[0] >> x[1] >> y[0] >> y[1];
for (int i = 0;i < 2;i++){
for (int j = 0;j < 2;j++){
if (x[i] * y[j] > INT_MAX || x[i] * y[j] < INT_MIN){
cout << "long long int";
return 0;
}
}
}
cout << "int";
return 0;
}
```
by ZZYX_18670145320 @ 2024-04-06 21:15:26
@[xd244](/user/1153793)
修改后97了
```
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,c,d,x,x1,x2,x3,x4,x5;
cin>>a>>b>>c>>d;
x=a*b;
x1=a*c;
x2=a*d;
x3=b*c;
x4=b*d;
x5=c*d;
if(x>2147483647||x<-2147483648||x1>2147483647||x1<-2147483648||x2>2147483647||x2<-2147483648||x3>2147483647||x3<-2147483648||x4>2147483647||x4<-2147483648||x5>2147483647||x5<-2147483648)
cout<<"long long int";
else
cout<<"int";
}
```
by zj13516757538 @ 2024-04-06 21:17:05
@[xd244](/user/1153793)
还有什么错误吗?
by zj13516757538 @ 2024-04-06 21:18:43
@[ZZYX_18670145320](/user/1192648)
```
INT_MIN
```
这是啥
by zj13516757538 @ 2024-04-06 21:21:04
@[zj13516757538](/user/953621) $a\times c\ ,\ b\times d$ 不用
by __Tonycyt__ @ 2024-04-06 21:25:42
INT_MIN=-2147483648
by __Tonycyt__ @ 2024-04-06 21:26:07
@[__Tonycyt__](/user/667037)
哦
by zj13516757538 @ 2024-04-08 20:45:13
@[__Tonycyt__](/user/667037)
怎么还九十四了
```
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a,b,c,d,x,x2,x3,x5;
cin>>a>>b>>c>>d;
x=a*b;
x2=a*d;
x3=b*c;
x5=c*d;
if(x>2147483647||x<-2147483648||x2>2147483647||x2<-2147483648||x3>2147483647||x3<-2147483648||x5>2147483647||x5<-2147483648)
cout<<"long long int";
else
cout<<"int";
}
```
by zj13516757538 @ 2024-04-08 20:48:01
@[zj13516757538](/user/953621)
不用这么写,你直接a*c,a*d这样子把所有结果写出来在判断是否大于INT_MAX或小于INT_MIN就可以了
(只是if写的有一点小长)
for example:
if(a*c>INT_MAX||a*d>INT_MAX||b*c>INT_MAX||b*d>INT_MAX||a*c<INT_MIN||a*d<INT_MIN||b*c<INT_MIN||b*d<INT_MIN)
by hjmcyh @ 2024-06-05 17:11:59