(DFS or BFS)Find The Multiple(poj1426)

该博客介绍了一个程序设计问题,要求找到一个正整数n的非零倍数m,其十进制表示仅由0和1组成。文章提供了输入输出示例,并分别讨论了使用深度优先搜索(DFS)和广度优先搜索(BFS)的解决方案策略。对于DFS,当数字位数超过19且能被n整除时,该数字即为答案。而对于BFS,可以通过队列逐层查找符合条件的m。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

给定一个正整数n,请编写一个程序来寻找n的一个非零的倍数m,这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。
提示:本题采用Special Judge,你无需输出所有符合条件的m,你只需要输出任一符合条件的m即可。
Input
输入包含多组数据,每组数据仅一行,只包含一个正整数n (1 <= n <= 200).
Output
对于输入的每组n,都输出任一符合条件的m。即使有多个符合条件的m,你也只需要输出一个即可。
Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111

分析与解答

*10;*10+1最终都会满足每位上是零或1

先看dfs,由于是深搜,我们假设用y存那个01的结果,x存位数,那么由于答案输出任意符合条件的,我们让他位数超过19就不搜了,如果y%m=0说明y就是答案,我们输出y然后flag=1,让其他的都return了

其实这题可以用bfs,因为他也是每个结点分了两个根结点,那么我们可以逐层查找
先建立一个队列,存那些1,0组成的数,然后把1放到队列里

queue<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天学点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值