自定义快读 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大佬的博客

读入各种类型的代码
posted on 2022-04-21 16:20  幽遇  阅读(50)  评论(0编辑  收藏  举报