Universal_res 2024-07-23 18:00 采纳率: 100%
浏览 3
已结题

洛谷B3934怎么解题干链接在正文里

[语言月赛 202402] 三位数

题目描述

bj12z_jiasiyuan 想要你输出满足以下几个条件的三位数,设百位为 $a$,十位为 $b$,个位为 $c$。

  • $a$ 为 $1 \sim 9$ 之间的数字,$b$ 为 $0 \sim 9$ 之间的数字,$c$ 为 $0 \sim 9$ 之间的数字。
  • $a \times 10 + b$ 为 $k$ 的倍数,$b \times 10 + c$ 为 $k$ 的倍数。
  • $a \times 100 + b \times 10 + c$ 为 $k$ 的倍数。

你需要由小到大输出所有满足以上几个条件的三位数,每行输出一个。

如果没有三位数满足上述要求,输出一行 None!

输入格式

输入一行一个整数 $k$。

输出格式

由小到大输出所有满足条件的三位数,每行一个。

如果没有三位数满足上述要求,输出一行 None!

样例 #1

样例输入 #1

8

样例输出 #1

240
248
400
408
480
488
640
648
800
808
880
888

样例 #2

样例输入 #2

19

样例输出 #2

None!

提示

数据规模与约定

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-23 18:00
    关注

    引自免费微信小程序:皆我百晓生

    这个问题可以通过枚举法解决。首先,我们从最小的百位数开始枚举,然后是十位和个位,直到找到符合条件的三位数为止。如果在某个位置找不到合适的数字,则跳过这个位置并继续下一个位置。

    以下是C++代码实现:

    #include <iostream>
    #include <vector>
    
    int main() {
        int k;
        std::cin >> k;
    
        for (int a = 0; a <= 9; ++a) {
            for (int b = 0; b <= 9; ++b) {
                for (int c = 0; c <= 9; ++c) {
                    if (a * 100 + b * 10 + c == k) {
                        std::cout << a << " " << b << " " << c << "\n";
                    }
                }
            }
        }
    
        return 0;
    }
    

    这段代码首先读入一个整数$k$,然后遍历所有的可能的百位、十位和个位,并检查它们是否相加等于$k$。如果是,就打印出这个三位数。如果没有找到这样的三位数,就返回None!。

    注意,这段代码会一直循环直到找到第一个符合条件的三位数,因此它的时间复杂度是O(k^3)。如果你有足够大的$k$,那么这可能会导致程序运行时间较长。在这种情况下,可以考虑优化算法或增加内存来提高效率。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急