红中一点绿

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

```cpp #include<bits/stdc++.h> using namespace std; int main() { long long x1,x2,y1,y2; cin>>x1>>x2>>y1>>y2; if(x2*y2>pow(2ll,31ll)-1ll||x1*y1<0ll-pow(2ll,31ll))cout<<"long long int"; else cout<<"int"; } ```
by Little_Cart @ 2023-12-20 19:21:06


这道题实际很坑 得四个交叉相乘,上界和下界都需考虑 我的代码(一开始就因为没有四个交叉相乘,wa了5个点 [提交记录](https://www.luogu.com.cn/record/list?pid=P1401&user=1118614) ```cpp #include <bits/stdc++.h> using namespace std; const long long m1 = 2147483647; const long long m2 = -2147483648; long long xl,xr,yl,yr; int main(){ scanf("%lld%lld%lld%lld",&xl,&xr,&yl,&yr); if (xl * yl > m1 || xl * yl < m2 || xr * yr > m1 || xr * yr < m2 || xl * yr > m1 || xl * yr < m2 || xr * yl > m1 || xr * yl < m2) printf("long long int"); else printf("int"); return 0; } ```
by liuruiqing @ 2023-12-20 19:24:11


@[Little_Cart](/user/392157) 得交叉相乘,不然wa8个点 [不然会这样](https://www.luogu.com.cn/record/140331792)
by liuruiqing @ 2023-12-20 19:27:29


|