92分 为什么直接判断范围会错呢?

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

有这么复杂吗? 判断有没有超int就好啦: ```c #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; } ``` 求关
by mengfancheng @ 2024-09-10 21:47:42


咳咳,你知不知道不能用 y1 做变量名 接着我很抱歉的告诉你,我暂时改不出来 能力有限,望谅解 虽然AC了
by feizhu0130 @ 2024-09-10 21:51:27


这是我写的,更简介明了,上面随便揪的其他人AC代码,刚找到我的记录: ```c #include<bits/stdc++.h> using namespace std; int main(){ long long a,b,x,y; cin>>a>>b>>x>>y; if(a*x<-2147483648||a*x>2147483647||b*y<-2147483648||b*y>2147483647||a*y<-2147483648||a*y>2147483647||b*x<-2147483648||b*x>2147483647){ cout<<"long long int"; }else{ cout<<"int"; } return 0; } ```
by mengfancheng @ 2024-09-10 21:54:47


@[mengfancheng](/user/1198444) 感觉我和你的代码出奇的像诶 ```cpp #include<bits/stdc++.h> using namespace std; int main() { long long x_1,x_2,y_1,y_2; cin>>x_1>>x_2>>y_1>>y_2; if(x_1*y_1>2147483647||x_1*y_2>2147483647||x_2*y_2>2147483647||x_2*y_1>2147483647||x_1*y_1<-2147483647||x_1*y_2<-2147483647||x_2*y_2<-2147483647||x_2*y_1<-2147483647) { cout<<"long long int"; } else { cout<<"int"; } return 0; } ```
by feizhu0130 @ 2024-09-10 21:55:06


都是智慧树法 ~~(直接CTRL+c和v不香吗?)~~
by mengfancheng @ 2024-09-10 22:02:08


@[Alecvbnm](/user/1443888) 为什么要x1*x2呢,应该是 x1*y1, x1*y2, x2*y1, x2*y2
by ws_Zzz @ 2024-09-17 20:56:35


|