输入挂

今天起决定总结自己做题写出来的遇到的找到的各种模板,先从输入挂开始啦

有的题目需要大规模输入,很多情况用cin超时,用scanf就能过,因为scanf的速度远远快于cin。但是比scanf还要nb的输入是getchar(),这个读入速度极快,输入挂就是基于这点写的。

整数

View Code
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;

}

实数

View Code
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;

}

 

你可能感兴趣的:(输入挂)