输入挂
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入挂相关的知识,希望对你有一定的参考价值。
有的题目需要大规模输入,很多情况用cin超时,用scanf就能过,因为scanf的速度远远快于cin。但是比scanf还要nb的输入是getchar(),这个读入速度极快,输入挂就是基于这点写的。
整数
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; }
实数
1 inline bool scan_lf(double &num) 2 { 3 char in;double Dec=0.1; 4 bool IsN=false,IsD=false; 5 in=getchar(); 6 if(in==EOF) return false; 7 while(in!=‘-‘&&in!=‘.‘&&(in<‘0‘||in>‘9‘)) 8 in=getchar(); 9 if(in==‘-‘){IsN=true;num=0;} 10 else if(in==‘.‘){IsD=true;num=0;} 11 else num=in-‘0‘; 12 if(!IsD){ 13 while(in=getchar(),in>=‘0‘&&in<=‘9‘){ 14 num*=10;num+=in-‘0‘;} 15 } 16 if(in!=‘.‘){ 17 if(IsN) num=-num; 18 return true; 19 }else{ 20 while(in=getchar(),in>=‘0‘&&in<=‘9‘){ 21 num+=Dec*(in-‘0‘);Dec*=0.1; 22 } 23 } 24 if(IsN) num=-num; 25 return true; 26 }
以上是关于输入挂的主要内容,如果未能解决你的问题,请参考以下文章