关于快读入与快速输出及解析
long long read()
{
long long ans=0;
char last=' ',ch=getchar();//last用来存正负号,并消去那些换行符,空格
while(ch<'0'||ch>'9')
{
last=ch;ch=getchar();//如果不是数字类型字符,就一直读入(一直爽)
}
while(ch>='0'&&ch<='9')//直到读入数字字符,读完一段连续的数字为止
{
ans=(ans<<3)+(ans<<1);//位运算,为乘法的加快版,也就是乘以10
ans+=ch-'0';ch=getchar();//加上当前一位数字
}
return last=='-'?-ans:ans;//三目运算符,if的升级版,比if快
//话说还有用w来代替last的,也可以呀
}
输出优化模板
相比读入,输出优化就显得没什么用处了,因为一般输出的数据仅仅有1个数字或几个,但是如果要输出方案等较长的,输出优化还是不错的选择
void print(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9) print(x/10);
putchar(x%10+'0');
return;
}