zoukankan      html  css  js  c++  java
  • 输入输出问题

    关于输入输出,可选择的方法一共有3种:

    1、cin和cout

    2、scanf和printf

    3、读入/输出优化

    这三种方法都有各自的优点,也有相应的瑕疵。其中cin和cout使用起来最为方便简单,但速度较慢,数据规模较大时可能会超时,不过可以通过关闭与stdio的同步来加速。

    ios::sync_with_stdio(false);
    cin.tie();cout.tie()

    加速之后就可以达到甚至超过scanf和printf的速度。

    而scanf和printf使用起来也比较方便而且速度较快,但需要掌握部分格式输出符的用法。

    在这里简单列举一下:

    %d  输入输出十进制整数(%u则是无符号整数)

    %o  八进制整数    %x  十六进制整数

    %c  输入输出单个字符    %s  输入输出字符串(空格会认为是结束并且不会包含)

    %f  用于输入输出单精度浮点数(输出时,默认输出6位小数,且会四舍五入)

    此外还有一些常用附加格式:

    l用于双精度浮点数等(如%lf,%ld,long long类型不一定是%lld,会与操作系统有关)

    输出时,也可以指定输出位数,如%7d,不足会补空格,而%07d,不足则会补0

    输出浮点数时,可以指定小数位数,如%.mf,就会强制输出m位小数,不会四舍五入


    如果数据规模足够大,cin、cout和scanf、printf都无法满足要求时,就需要用到读入/输出优化了。

    读入/输出优化的原理是利用了getchar()/putchar()这两个函数的速度较快,然后对应每一位处理。

    即使数据规模不是特别大,读入/输出优化也是可以在某些情况下骗到点分数的。

     1 #include <cstdio>
     2 
     3 inline int get_num() { //内联一下,更快
     4     int num = 0, flag = 1;
     5     char c = getchar();
     6     while (c < '0' || c > '9') {
     7         if (c == '-') flag = -1;
     8         c = getchar(); //过滤换行空格等
     9     } //并处理负数
    10     while (c >= '0' && c <= '9') {
    11         num = num * 10 + c - '0';
    12         c = getchar();
    13     } //读入每位数字
    14     return flag * num;
    15 }
    16 
    17 void put_num(int i) { //先处理负数
    18     if (i < 0) putchar('-'), i = -i;
    19     if (i > 9) put_num(i / 10);
    20     putchar(i % 10 + '0'); //大于9才递归
    21 } //不要忘记加上'0'
    读入及输出优化
  • 相关阅读:
    多线程---同步函数的锁是this(转载)
    函数
    流程控制
    基本语句和运算
    基本数据库类型
    迷宫问题
    Dungeon Master(逃脱大师)-BFS
    HTML元素常用属性整理
    Java_hutool 发起请求
    jQuery Autocomplete
  • 原文地址:https://www.cnblogs.com/Mr94Kevin/p/7261374.html
Copyright © 2011-2022 走看看