写在前面
今天晚上闲来无事,就将各种类型的快读和快出写了出来(不会写浮点型);
读入int
比如int是节省时间最快的,超级快!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| inline int In_int() { int This=0,F=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') F=-F; ch=getchar(); } while(ch>='0'&&ch<='9') { This=(This<<1)+(This<<3)+ch-'0'; ch=getchar(); } return This; }
|
读入char
其次就是char类型,节省时间一般般。
1 2 3 4 5 6
| inline char In_char() { int ch=getchar(); while(ch<'A'||ch>'z') ch=getchar(); return ch; }
|
读入string
然后就是cstring类型的,发现并没有多大提升,一样慢的要死。(可能我的用getchar没有办法进行特别强大的优化)
1 2 3 4 5 6 7 8 9 10 11
| inline string In_string() { string s1; char ch=getchar(); while(ch<'!'||ch>'~') ch=getchar(); while(ch>='!'&&ch<='~') { s1+=ch; ch=getchar(); } return s1; }
|
输出char:
1 2 3 4 5
| inline void Put_char(char x) { putchar(x); putchar('\n'); }
|
输出string:
1 2 3 4 5
| inline void Put_string(string x) { for(int i=0;i<x.size();i++) putchar(x[i]); putchar('\n'); }
|
输出int:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void Put_int(int x) { int This=10,len=1; while(This<=x) { This=(This<<1)+(This<<3); len++; } while(len--) { This/=10; putchar(x/This+'0'); x%=This; } }
|