使用C++的标准cin进行读入速度比较慢,尤其是在大数据的情况下,所以我们需要使用一种方法,按照字符读入,最后再“组装”成整数。由于字符读入比数字要快,所以这样做可以提高读入速度。
方法:逐位读入,把原来的数乘上10再加上这个数即可。乘上10的目的是空出个位放入待读入的数。例如,输入123先读入1,x=1再读入2,x=x*10+2=10+2=12再读入3,x=x*10+3=120+3=123对于负数的处理,只需要判断读入的第一个数是否为负数。
void fast_read(int &x){
x=0;
char c;
int fs;
c=getchar();
while(c==' ')c=getchar();
if(c=='-')fs=1;
else fs=0,x=x*10+c-'0';
while(c>='0'&&c<='9'){
c=getchar();
if(c>='0'&&c<='9')x=x*10+c-'0';
}
if(fs)x*=-1;
return;
}