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

快读快写

时间:2021-06-02 14:14:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:har   原理   ++   size   ==   ret   字符   传统   速度   

ps:getchar()只读入一个字符

快读快写的应用情景:数据量较大时(数据很小的时候没什么用还浪费写代码的时间)

优点:快

应用限制:只能读入整数

原理:通过读入字符的方式来优化数的读入(这里认为字符的输入比传统型整数的输入更快)

 

快读模板:

inline int read()
{
    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*10+ch-0,ch=getchar();
    return x*f;
}

 

优化的快读模板(我是真没想到这东西也能优化):
优化原理:只不过这个模板在读入速度上进行了优化而已,在原来的模板字符读入的基础上进行了提速。

优点:显然是更快了

char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read()
{
    int x=0,f=1;
    char ch=nc();
    while(ch<48||ch>57)
    {
        if(ch==-)
            f=-1;
        ch=nc();
    }
    while(ch>=48&&ch<=57)
        x=x*10+ch-48,ch=nc();
       return x*f;
}

快写模板:

原理解释:快写其实也是在字符输出(普遍认为字符输出比标准输出流快)的基础上进行按位分解,递归输出的。其基本原理还是先判正负再分解输出的。

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

 

快读快写

标签:har   原理   ++   size   ==   ret   字符   传统   速度   

原文地址:https://www.cnblogs.com/mint-hexagram/p/14821703.html

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