自定义快读 read
一、读自然数
//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、少许关联语句可用逗号运算符隔开,省略{},语句更紧凑
//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(); //1、二进制运算符级别低,括号不能少,2、少许关联语句可用逗号运算符隔开,省略{},语句更紧凑
return f?-x:x;
}
更多快读技巧:请参考Y_B_Y大佬的博客