1. 程式人生 > 其它 >自定義快讀 read

自定義快讀 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、由於運算子優先順序,表示式中的括號不可省略
	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大佬的部落格

讀入各種型別的程式碼