PAT甲级1065 A+B and C (64bit):[C++题解]爆long long,熟悉计算机存储有符号数原理
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1065 A+B and C (64bit):[C++题解]爆long long,熟悉计算机存储有符号数原理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目來源
題目分析
來源:acwing
一般64位機上,long long 是64位。所以263?12^{63}?1263?1是long long 的范圍,所以a+b可能會爆long long。
這道題需要考慮溢出的情況,只有兩種:
ac代碼
還是使用long long來存。
下面的ac代碼如果使用cin >> a >> b >> c;會錯一個。
注意:PAT數(shù)據(jù)修改過了,存在A,B,C同時等于9223372036854775808就是2的63次方的例子。超出long long的表示范圍。
直接long double
#include<bits/stdc++.h> using namespace std;int main(){int k;cin>> k;string flag;for(int i =1; i<=k;i++){long double a, b,c;cin >> a >> b >> c;if(a+b>c) flag = "true";else flag = "false";printf("Case #%d: %s\n",i,flag.c_str()); } }題目來源
總結(jié)
以上是生活随笔為你收集整理的PAT甲级1065 A+B and C (64bit):[C++题解]爆long long,熟悉计算机存储有符号数原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1062 Talent and
- 下一篇: PAT甲级1069 The Black