正常版的话就是利用getchar()读入,对读到的数字处理:
int read() { int x=0;char ch=getchar(); while(ch>'9'||ch<'0') ch=getchar(); while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x; }
下面的属于那种有模板我也不会背的,巨长无比
/*inline int Read() { int F=1,Num=0; //F是记录数字是否为负数,Num存储读入的数字 char ch=getchar(); //getchar()读取一个字符 while(!isdigit(ch)) //isdigit()判断是否为数字 { if(ch=='-') F=-1; //如果读入的字符是符号,标记F ch=getchar(); //继续读字符 } while(isdigit(ch)) //如果当前读入的字符是数字,则将整个数字全部读入 { Num=Num*10+ch-'0'; //将读入的ASCII字符转换为数字 //或者上面的代码可以这样写:Num=(Num<<1)+(Num<<3)+ch-'0'; ch=getchar(); //读取下一个字符 } return Num*F; //将读取完毕的字符返回 }*/ /*inline long long read() { long long F=1,Num=0; //F是记录数字是否为负数,Num存储读入的数字 char ch=getchar(); //getchar()读取一个字符 while(!isdigit(ch)) //isdigit()判断是否为数字 { if(ch=='-') F=-1; //如果读入的字符是符号,标记F ch=getchar(); //继续读字符 } while(isdigit(ch)) //如果当前读入的字符是数字,则将整个数字全部读入 { Num=Num*10+ch-'0'; //将读入的ASCII字符转换为数字 //或者上面的代码可以这样写:Num=(Num<<1)+(Num<<3)+ch-'0'; ch=getchar(); //读取下一个字符 } return Num*F; //将读取完毕的字符返回 }*/
/* char buf[1<<15],*fs,*ft; inline char getc(){ return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:* fs++; } inline int In() { int This=0,F=1; char ch=getc(); while(ch<'0'||ch>'9') { if(ch=='-') F=-1; ch=getc(); } while(ch>='0'&&ch<='9') { This=(This<<1)+(This<<3)+ch-'0'; ch=getc(); } return This*F; }*/