因为流是一种有延时的处理办法,读入和待输出的数据会先被储存在内存里,这样会使得在大规模数据的题中这种输入输出方式有些费时间
读入优化如下:
int read() {
int X=0,w=1;//w用来控制正负数
char c=getchar();//这里先读一个字符
while(c<'0'||c>'9'){//跳过所有不为数字的字符
if (c=='-') w=-1;//如果读到负号,w改变
c=getchar();
}
while(c>='0'&&c<='9')
/*
这里是x=x*10+c-'0'
x*10=x*2+x*8,用位运算再次优化效率
*/
X=(X<<3)+(X<<1)+c-'0',
c=getchar();
return X*w;
}
缩行:
int read(){
int X=0,w=1;char c=getchar();
while(c<'0'||c>'9')
{if (c=='-') w=-1;c=getchar();}
while(c>='0'&&c<='9')X=(X<<3)+(X<<1)+c-'0',c=getchar();
return X*w;
}
最终版
int read(){
int x=0,k=1;char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-')k=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=(x<<3)+(x<<1)+(ch^'0');
ch=getchar();
}
return x*k;
}
能用位运算就用位运算吧