2 条题解
-
1
看注释
#include <iostream> #include <cmath> #include <climits> using namespace std; int main() { int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; long long max1, max2; // 获取绝对值, 排除负数影响 x1 = abs(x1); x2 = abs(x2); y1 = abs(y1); y2 = abs(y2); // 获取两个边界最大值 max1 = max(x1, y1); max2 = max(x2, y2); // 若有最大值为零,乘积同样为零 if (max1 == 0 || max2 == 0) { cout << "int"; return 0; } // 若有最大值大于int范围最大值 if (max1 > INT_MAX || max2 > INT_MAX) { cout << "long long"; return 0; } // 有一个最大值大于ing范围最大值与另一个最大值的商 if (INT_MAX / max1 < max2 || INT_MAX / max2 < max1) { cout << "long long"; return 0; } cout << "int"; return 0; } -
0
#include<bits/stdc++.h> using namespace std; /* 用long long 比对四个端点 */ int main(){ long long x1,y1; long long x2,y2; scanf("%lld%lld",&x1,&y1); scanf("%lld%lld",&x2,&y2); int res=0; long long a=x1*x2,b=y1*y2,c=x1*y2,d=y1*x2; if((a>0&&a<=INT_MAX)||(a<0&&a>=INT_MIN)){ res++; } if((b>0&&b<=INT_MAX)||(b<0&&b>=INT_MIN)){ res++; } if((c>0&&c<=INT_MAX)||(c<0&&c>=INT_MIN)){ res++; } if((d>0&&d<=INT_MAX)||(d<0&&d>=INT_MIN)){ res++; } if(res==4){ printf("int\n"); }else{ printf("long long\n"); } return 0; }
- 1
信息
- ID
- 513
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- (无)
- 递交数
- 160
- 已通过
- 20
- 上传者