long long的加法溢位情況
l o n g l o n g long\ long long long的加法溢位情況:
l o n g l o n g long\ long long long能儲存的資料範圍: [ − 2 63 , 2 63 − 1 ] [-2^{63},2^{63}-1] [−263,263−1]。
1.當 a , b > 0 , a + b ≥ 2 63 a,b>0,a+b\geq2^{63} a,b>0,a+b≥263
a + b ∈ [ 2 63 , 2 64 − 2 ] a+b\in[2^{63},2^{64}-2] a+b∈[263,264−2]。
根據計算機的溢位處理規則:需要對最高位 2 64 2^{64} 264取模。
取模後變為: [ 2 63 , − 2 ] [2^{63},-2] [263,−2]。
但是 2 63 2^{63} 263在計算機會自動轉為: − 2 63 -2^{63} −263。
所以範圍變為: [ − 2 63 , − 2 ] [-2^{63},-2] [−263,−2]。
2.當 a < 0 , b < 0 , a + b ≥ 0 a<0,b<0,a+b\geq0 a<0,b<0,a+b≥0。
a + b ∈ [ − 2 64 , − 2 63 − 1 ] a+b\in[-2^{64},-2^{63}-1] a+b∈[−264,−263−1]。
同樣取模後變為: [ 0 , 2 63 − 1 ] [0,2^{63}-1] [0,263−1]
3.其他情況不會溢位。
對應的 P A T PAT PAT 1065 A+B and C (64bit)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define il inline
int t;
int main(){
scanf("%d",&t);
for(int i=1;i<=t;i++){
ll a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
ll d=a+b;
printf("Case #%d: ",i);
if(a>0&&b>0&&d<0) puts("true");
else if(a<0&&b<0&&d>=0) puts("false");
else if(d>c) puts("true");
else puts("false");
}
return 0;
}
值得注意的是: a + b a+b a+b這裡先得用一個變數 l o n g l o n g long\ long long long 儲存起來,再與 c c c比較,不然會出錯。
相關文章
- 新年新歲,好運 long long
- c++ 基本資料型別(int、float、double、long、long long)最大值,最小是表示方法C++資料型別
- long2varchar 把long轉換為varchar2
- data too long for column
- 異常、堆記憶體溢位、OOM的幾種情況記憶體溢位OOM
- sqlserver kill long time lockSQLServer
- getopt和getopt_long
- 走進 JDK 之 LongJDK
- getopt與getopt_long
- springMvc DeferredResult的long polling應用SpringMVC
- longValue( )和Long.valueOf( )的區別
- Error running ‘Application’Command line is too longErrorAPP
- 從JDK原始碼角度看LongJDK原始碼
- Oracle long轉為varchar2Oracle
- 關於Argument list too long的問題
- 測試Java中的long,int基本型別Java型別
- ORA-01489: result of string concatenation is too long
- Spring Mvc Long型別精度丟失SpringMVC型別
- 從RocketMQ看長輪詢(Long Polling)MQ
- 【Mongo】使用killOp幹掉Long Running OperationGo
- prettier/prettier-vscode FormatOnSave takes a long time 慢VSCodeORM
- Specified key was too long; max key length is 1000 bytes
- [20181014]12Cr2 impdp使用NETWORK_LINK支援LONG欄位型別.txt型別
- 如何限制使用者修改long_query_time
- File name too long window和linux排查,解決Linux
- 【基礎語法】short、int、long轉為byte
- long資料型別跨平臺問題資料型別
- 溢位、上溢、下溢
- 解決 Specified key was too long ... 767 bytes 的本質問題
- SAP:CX_SY_READ_SRC_LINE_TOO_LONG解決
- idea編輯器中 This document contents very long lines..........Idea
- 報錯indexerror: tensors used as indices must be long, byte or bool tensorsIndexError
- linux的命令列解析引數之getopt_long函式使用Linux命令列函式
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- https://github.com/long36708/long36708/blob/main/resources/img/grid-snake.svg 請問這個的檔案要放到github的哪個目錄下HTTPGithubAISVG
- 64位Linux下的棧溢位Linux
- 1.linux的命令列解析引數之getopt_long函式Linux命令列函式
- 基於long pull實現簡易的訊息系統參考