1 条题解

  • 0
    @ 2025-8-24 22:13:35

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar CSP_Sept
    私が戻ってきたのはね。 もう一度、星の音を聞くためだよ

    搬运于2025-08-24 22:13:35,当前版本为作者最后更新于2020-01-18 21:34:32,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    Updated on 2021.08.05 优化了原题解,增加了关于输入输出的详细说明,希望能再次通过审核!


    你当然可以使用 string 类的 reverse 操作,或者是字符数组倒序输出,这里介绍一种可能在你整个 OI 生涯与你相伴的做法。

    本文将为你介绍 格式化输入输出函数scanf\tt scanfprintf\tt printf

    0 为什么

    scanf/printf\tt scanf/printf 相比 cin/cout\tt cin/cout 快得多,应对多数题目绰绰有余。

    Luogu P7505 「Wdsr-2.5」小小的埴轮兵团 为例。

    笔者先后提交了两次,一次是使用自己的验题代码(使用了 scanf/printf),一次是使用 cin/cout。

    可以看出,差异是相当大的了。

    (当然用快读更快)

    1 语法

    #include <cstdio> //头文件
    ... ...
    scanf("输入控制符", 输入参数);
    printf("输出控制符", 输出参数);
    

    其中常用的输入控制符有:

    • %d:读入一个 3232 位有符号整数。
    • %u:读入一个 3232 位无符号整数。
    • %lld:读入一个 6464 位有符号整数。
    • %llu:读入一个 6464 位无符号整数。
    • %f:读入一个 float 类型。
    • %lf:读入一个 double 类型。

    输出控制符与之类似。

    练习: Luogu P1001 A+B Problem

    2 Solution

    而这道题用 %d 类型是过不了的,因为输入没有空格,但可以用 %1d 输入,代表读入的整数都只有 11 位。

    先定义四个字符类型。

    当然,如果输入中有多余的已知字符,可以在 scanf 中用该字符占位。

    例如输入是 2021.8052021.805,使用如下代码读入,a,ba,b 的值分别为 2021,8052021,805

    scanf("%d.%d", &a, &b);
    

    本题 AC 代码:

    #include <cstdio>
    
    using namespace std;
    char a, b, c, d;
    int main(){
    	scanf("%c%c%c.%c", &a, &b, &c, &d);
    	printf("%c.%c%c%c", d, c, b, a);
    	return 0;
    }
    

    练习: Codeforces 1A Theatre Square[NOIP2011 普及组] 数字反转Luogu P1553 数字反转(升级版)

    拓展练习: [NOI2021] 量子通信

    • 1

    信息

    ID
    4672
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者