什么是輸入掛?
眾所周知scanf比cin快的多,那么有沒有比scanf更快的東西呢?答案就是輸入掛,輸入掛利用了告訴讀取的函數getchar(),然后再人工處理成整數或浮點,比使用scanf快太多。
什么時候用輸入掛?
當輸入規模達到1×10^6次方的時候,就需要輸入掛,否則很有可能超時。
代碼
代碼不是我寫的,此處給出出處:http://www.cnblogs.com/xiaohongmao/archive/2012/05/29/2523760.html
整數
inline bool scan_d(int &num) { char in;bool IsN=false; in=getchar(); if(in==EOF) return false; while(in!='-'&&(in<'0'||in>'9')) in=getchar(); if(in=='-'){ IsN=true;num=0;} else num=in-'0'; while(in=getchar(),in>='0'&&in<='9'){ num*=10,num+=in-'0'; } if(IsN) num=-num; return true; }
浮點
inline bool scan_lf(double &num) { char in;double Dec=0.1; bool IsN=false,IsD=false; in=getchar(); if(in==EOF) return false; while(in!='-'&&in!='.'&&(in<'0'||in>'9')) in=getchar(); if(in=='-'){IsN=true;num=0;} else if(in=='.'){IsD=true;num=0;} else num=in-'0'; if(!IsD){ while(in=getchar(),in>='0'&&in<='9'){ num*=10;num+=in-'0';} } if(in!='.'){ if(IsN) num=-num; return true; }else{ while(in=getchar(),in>='0'&&in<='9'){ num+=Dec*(in-'0');Dec*=0.1; } } if(IsN) num=-num; return true; }