寻找整数
【题目描述】
有一个不超过101710^171017的正整数n,知道这个数除以2至49后的余数如下表所示,求这个正整数最小是多少
![![[Pasted image 20240326202941.png]]](https://i-blog.csdnimg.cn/blog_migrate/5a703c49c834dae7806f3d761fa6a7a7.png)
解法一:模拟
暴力法:一个个检验1…10171\dots 10^{17}1…1017的每个数
由于这个数n最大可能是101710^{17}1017,验证的时间太长
解法二:LCM
从表格的第一个数2开始,逐个增加后面的数,找满足条件的n
- 满足第一个条件,除以2余1的数有:3,5,7,9…此时步长k=2
- 继续满足第二个条件,除以3余2的数,只能从上一步骤的3,5,7,9…中找,有5,11,17…此时步长k=6
为什么k=6
因为LCM:k=(2, 3)=6
证明:
设n1n_{1}n1和n2n_{2}n2满足
n1=2a1+1=3b1+2n_{1}= 2a_{1}+1 = 3b_{1}+2n1=2a1+1=3b1+2
n2=2a2+1=3b2+2n_{2}=2a_{2}+1= 3b_{2}+2n2=2a2+1=3b2+2
n2n_{2}n2和n1n_{1}n1的差k=n2−n1=2(a2−a1)=3(b2−b1)k=n_{2}-n_{1}=2(a_{2}-a_{1})=3(b_{2}-b_{1})k=n2−n1</

本文围绕蓝桥杯C++算法题展开,包含寻找整数、素数判断、笨小猴、最大最小公倍数等题目。介绍了寻找整数的模拟和LCM解法,素数判断的试除法和高级算法,还涉及素数筛、分解质因子等内容,通过多种思路和方法解决相关问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



