1065 A+B and C (64bit) (20 分)

本文探讨了一个涉及三个64位整数A、B和C的编程问题,重点在于判断A+B是否大于C。文章提供了详细的输入输出规范,通过样例展示了如何处理可能的溢出情况,并附带了一个C++代码示例,解释了如何避免符号位取反导致的错误。
1065 A+B and C (64bit) (20 分)

Given three integers A, B and C in [2^63​​,2​^63​​], you are supposed to tell whether A+B>C.

Input Specification:

The first line of the input gives the positive number of test cases, T (10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.

Output Specification:

For each test case, output in one line Case #X: true if A+B>C, or Case #X: false otherwise, where X is the case number (starting from 1).

Sample Input:

3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0

Sample Output:

Case #1: false
Case #2: true
Case #3: false


分析:这个题有坑点,涉及到计算机组成原理的知识,数字的范围是[2^63​​,2​^63​​], 而long long 的范围是[-2^63,2^63),两个数相加会溢出,符号位会取反。
 1 /**
 2 * Copyright(c)
 3 * All rights reserved.
 4 * Author : Mered1th
 5 * Date : 2019-02-23-19.49.08
 6 * Description : A1065
 7 */
 8 #include<cstdio>
 9 #include<cstring>
10 #include<iostream>
11 #include<cmath>
12 #include<algorithm>
13 #include<string>
14 #include<unordered_set>
15 #include<map>
16 #include<vector>
17 #include<set>
18 using namespace std;
19 
20 int main(){
21 #ifdef ONLINE_JUDGE
22 #else
23     freopen("1.txt", "r", stdin);
24 #endif
25     int n,num=1;
26     scanf("%d",&n);
27     for(int i=1;i<=n;i++){
28         long long a,b,c;
29         scanf("%lld%lld%lld",&a,&b,&c);
30         bool flag;
31         long long res=a+b;
32         if(a>0&&b>0&&res<0) flag=true;
33         else if(a<0&&b<0&&res>=0) flag=false;
34         else if(res>c) flag=true;
35         else flag=false;
36         if(flag==true) printf("Case #%d: true\n",i);
37         else printf("Case #%d: false\n",i);
38     }
39 
40     return 0;
41 }

 

转载于:https://www.cnblogs.com/Mered1th/p/10424044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值