快读快写
long long read(){
long long x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
void write(long long x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
快读
首先读入一个数字,我们需要他具体的值 ,和其符号 (正负)。
int x=0,f=1;
为了实现快读的快,我们需要用超快的 。
char ch=getchar();
然而读入的过程中可能有许多多余的字符,如 \n,\0,a 等等,为了过滤掉他们,我们使用一个库函数 :
:若参数 为阿拉伯数字 到 ,则返回非 值,否则返回 。
也就是相当于 。
在读入的过程中记录符号,最后把数字与符号相乘即可。
long long read(){
long long x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
快写
如果 是负数,输出 - 号,并改成正数。
if(x<0) putchar('-'),x=-x;
如果 是两位数,先输出它的前几位,用递归实现。
if(x>9) write(x/10);
最后输出各位。
void write(long long x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}

浙公网安备 33010602011771号