Poj1465 Multiple(BFS+余数判重)

本文介绍了一种求解给定数字N的最小正整数倍数的问题算法,该倍数仅包含特定数字集合中的数字。通过使用广度优先搜索(BFS)并结合模运算进行判重的方法,确保了找到满足条件的最小倍数。

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

题意:给定一个自然数N,以及M个不同的数字X1,X2,...Xm,求N的最小正整数倍数,满足这个数的每个数字都是M个数字中的其中一个

算法:对于给定两个数A,B,如果A和B模N都相同,设为C,即:

A=x*N+C

B=y*N+C

那么如果在A后面加上一个数字能够被N整除,则在B后面加上这个数字也肯定可以被N整除

即:(A*10+X)%N==(B*10+X)%N

因此可以利用模N的结果进行判重,只保留相同余数的最小数,于是采用BFS搜索

 

由于可能出现大整数,处理技巧:用一个结构,保存每次添加的数字,然后形成一个数字链表,最后打印输出

 

代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值