【1065 20 溢出判断】 A+B and C (64bit)

传送门

题意

给定三个数 \(a,b,c\) 判断 \(a+b>c\) 是否成立

数据范围

\(a,b,c\in [-2^{63},2^{63}]\)

题解

  • 根据溢出来进行判断
  • 正数溢出:结果为 \(<0\) 的负数
  • 负数溢出:结果为 \(\geq 0\) 的正数
  • long long 的输入用 scanf ,不然可能有小的错误

Code

#include<bits/stdc++.h>
using namespace std;
#define ll long long 

void solve(int x){
    long long a,b,c; scanf("%lld%lld%lld",&a,&b,&c);
    long long sum=a+b;
    if(a > 0 && b > 0 && sum < 0) printf("Case #%d: true\n",x);
    else if(a<0 && b<0 && sum>=0) printf("Case #%d: false\n",x);
    else if(sum > c) printf("Case #%d: true\n",x);
    else printf("Case #%d: false\n",x);
}
int main(){
    int t; scanf("%d",&t);
    for(int i=1;i<=t;i++) solve(i);
}
posted @ 2021-02-27 03:25  Hyx'  阅读(59)  评论(0)    收藏  举报