1 条题解

  • 0
    @ 2025-8-24 21:15:36

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 玖安老师
    **

    搬运于2025-08-24 21:15:35,当前版本为作者最后更新于2024-02-26 16:08:43,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    欢迎大家报名洛谷网校的课程,期待和大家一起进步!

    思路分析

    我们可以定一个长度为 44 的数组,依次来表示表示一个二进制、八进制、十进制、十六进制。

    我们可以依次遍历字符串的每一位,如果该字符串中存在大于 '1' 的字符,则该字符串一定不能表示一个二进制数(二进制数字符串中只有 '0''1'),并把数组中对应的值改为 '0';同理,如果字符串中存在大于 '7' 的数,则一定不能表示一个八进制数;如果字符串中存在大于 '9' 的数,则一定不能表示一个十进制数;如果字符串中存在大于 'F' 的数,则一定不能表示一个十六进制数。

    之后输出该数组的值,并用空格隔开。

    核心代码

    //定义一个 bool 类型数组,用来表示能否表示对应的进制数
    bool a[4] = {1, 1, 1, 1};
    
    for (int j = 0; j < s.length(); j++){
    	//依次判断字符串中每一个字符
    	if (s[j] > '1') a[0] = 0;
    	if (s[j] > '7') a[1] = 0;
    	if (s[j] > '9') a[2] = 0;
    	if (s[j] > 'F') a[3] = 0;
    }
    cout << a[0] << ' ' << a[1] << ' ' << a[2] << ' ' << a[3] << endl;
    
    • 1

    信息

    ID
    9416
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者