自定義快讀 read
阿新 • • 發佈:2022-04-21
一、讀自然數
//A、普通青年版 #include <cstdio> using namespace std; inline long long read() { register int x=0; register char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x; } //B、文藝青年版 #include <cstdio> using namespace std; inline long long rd(){ register int x=0; register char ch=getchar(); while(ch<'0'||ch>'9')ch=getchar(); while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); //1、多語句轉為逗號語句,可省略{ },不熟悉,不建議使用; //2、由於運算子優先順序,表示式中的括號不可省略 return x; }
二、讀整數
//A、普通前年版 #include <cstdio> using namespace std; inline long long rd(){ register int x=0,f=0; register char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return f?-x:x; } //B、文藝青年版 #include <cstdio> using namespace std; inline long long rd(){ register int x=0,f=0;register char ch=getchar(); while(ch<'0'||ch>'9')f|=ch=='-',ch=getchar(); while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); //二進位制運算子級別低,括號不能少 return f?-x:x; }
更多快讀技巧:請參考Y_B_Y大佬的部落格