码迷,mamicode.com
首页 > 其他好文 > 详细

快读与快写的实现

时间:2020-11-06 02:34:54      阅读:16      评论:0      收藏:0      [点我收藏+]

标签:超时   输出   空格   https   int   amp   scanf   getchar   putc   

快读与快写

< 快读 >


  • 为什么要用快读?
    虽然scanf的读入速度比cin快,不过当我们遇到一些特别恶心的题目,哪怕用了sanf仍然会超时,而这时候就需要用上快读了。
  • 快读的大体思路:
    众所周知(反正我不知道),单个字符的读入速度要比读入数字的速度快,所以我们用 getchar() 以字符形式先读入字符,再将其化为数字来处理。

快读本体我们用一个函数来实现,因为体量较小,可以在前面加上 inline 来进一步节省时间。
实现代码如下:

inline int read()
{
    int x=0,falg=0;
    char c=getchar();   //读入第一个字符
    while (c>‘9‘||c<‘0‘){if (c==‘-‘) falg=1;c=getchar();}   //读入空格直接跳过,读入‘-‘标记flag为1。
    while (c<=‘9‘&&c>=‘0‘){x=x*10+c-‘0‘;c=getchar();}   //用循环逐步得到要读入的数字
    return falg?-x:x;
}

其实还是蛮简单的,自己也暴力测试过速度(在洛谷受苦),居然会比 cin 和printf 快,还是有些不可思议的,,,


< 快写 >

快写就更简单了,把整数 x 每一个 位上的数 逐一拆成字符输出即可,用的是 putchar() 。
代码如下

inline void write(int x)
{
    if(x<0)
    {
        putchar(‘-‘);
        x=-x;
    }
    if(x>9)
        write(x/10);

    putchar(x%10+‘0‘);
}

没了。

学习自:呐呐~

快读与快写的实现

标签:超时   输出   空格   https   int   amp   scanf   getchar   putc   

原文地址:https://www.cnblogs.com/Flowyuan-Foreverworld/p/13933513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!