C/C++快速输入(输入挂)

来源:互联网 发布:顶点软件牛叉诊股 编辑:程序博客网 时间:2024/05/15 17:40

借鉴大牛博客: http://www.cnblogs.com/xiaohongmao/archive/2012/05/29/2523760.html

cin 没有 scanf 快,那么还有比 scanf还快的输入吗?那就是getchar(),它比scanf快多了,输入挂就是根据它写的,具体代码(代码是看大牛的)如下:


整数:

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;}


强烈输入挂(直接交,看结果需要用文件):

#define FI(n) FastIO::read(n)namespace FastIO {const int SIZE = 1 << 16;char buf[SIZE], obuf[SIZE], str[60];int bi = SIZE, bn = SIZE, opt;int read(char *s) {while (bn) {for (; bi < bn && buf[bi] <= ' '; bi++);if (bi < bn) break;bn = fread(buf, 1, SIZE, stdin);bi = 0;}int sn = 0;while (bn) {for (; bi < bn && buf[bi] > ' '; bi++) s[sn++] = buf[bi];if (bi < bn) break;bn = fread(buf, 1, SIZE, stdin);bi = 0;}s[sn] = 0;return sn;}bool read(int& x) {int n = read(str), bf;if (!n) return 0;int i = 0; if (str[i] == '-') bf = -1, i++; else bf = 1;for (x = 0; i < n; i++) x = x * 10 + str[i] - '0';if (bf < 0) x = -x;return 1;}};



0 0
原创粉丝点击