【编程】C++读入,输出优化

终于轮到我使用这类操作了,因为被LUOGU P1816卡了。

众所周知,$scanf,printf$比$cin,cout$快,不过很显然$getchar,putchar$更快。

嗯不过缺点就是只能读整数,因为小数不好处理,反正一个题很多浮点数输入都是毒瘤。

负数处理

easy,用一个$int$/$int64$的$op$,初始为$1$,当读到$’-‘$时,$op = -1$,最后$n *= op$。

完整实现


int read(){
    int op = 1,ans = 0;char s = getchar();
    while(s < '0' || s > '9'){if(s == '-'){op = -1;}s = getchar();}
    while(s >= '0' && s <='9'){ans = ans * 10 + s - '0';s = getchar();}
    ans *= op;
    return ans;
}

输出优化

这里递归进行:


void print(int x){
    if(x < 0){putchar('-');x = -x;}
    if(x > 9){print(x / 10);}
    putchar(x % 10 + '0');
}