代码

inline int fread()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*f;
}

原理

getchar()比scanf()快

f判断正负

重点在x = (x<<1)+(x<<3)+(ch^48)
x<<1= x2x*2x<<3= x222x*2*2*2

(x<<1)+(x<<3) = x*10

ch^48=ch-'0'