2 条题解

  • 1
    @ 2025-10-10 9:14:13

    看注释

    #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
      @ 2026-3-27 15:47:27
      #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
      上传者