2021牛客寒假算法基础集训营1
比赛链接
I.限制不互素对的排列
题目描述
输入一个数 ,请构造一个长度为 的排列,使得其中正好有 对相邻的数gcd(最大公约数)大于 1 。 排列是指 1 到 一共 个数,每个数都出现过且仅出现过 1 次。例如, 是一个排列,而 、 则不是排列
输入描述:
两个整数 和 , 用空格隔开。
输出描述:
如果不存在可行的构造方案, 输出 。
否则输出一行 个数, 用空格隔开。如果有多组可行的构造方案, 输出任意一组即可。
解题思路
构造
所有连续的自然数互质,所有连续的奇数互质
由于 ,即 不算很大,可以分两种情况”
-
,可以先输出 个偶数,再输出最后输出的偶数后面的所有数,然后再输出前面的奇数
-
,这时即使算上所有的偶数还少了一个,可以将 和 放在后面,然后再输出那些剩余的奇数
-
时间复杂度:
代码
J.一群小青蛙呱蹦呱蹦呱
题目描述
有个格子,每个格子里有一个数,
牛牛放出无穷只青蛙。
第一只青蛙的路线是:1->2->4->8->16->....
第二只青蛙的路线是:1->3->9->27->81->....
第三只青蛙的路线是:1->5->25->125....
第四只青蛙的路线是:1->7->49........
。。。。。。
用数学语言描述,第 只青蛙的路线是首项为,公比为 的等比数列,其中 代表第 个素数。
当青蛙跳到一个格子上,如果这个格子上面有一个数,青蛙就会把这个数吃掉。
牛牛想知道,所有没有被吃掉的数的lcm(最小公倍数 ,Least common multiple)是多少?
由于这个lcm可能非常大,请输出它对 取模的值。
输入描述:
一个正整数
输出描述:
如果所有数都被吃掉了,请输出一个字符串"empty"
否则输出所有没有被吃掉的数的lcm,对 取模
示例1
输入
输出
说明
数字 1 可以被所有青蛙吃掉;
数字 2 可以被第 1 只青蛙吃掉;
数字 3 可以被第 2 只青蛙吃掉;
数字 4 可以被第 1 只青蛙吃掉;
数字 5 可以被第 3 只青蛙吃掉;
数字 6 无法被吃掉;
数字 7 可以被第 4 只青蛙吃掉。
所以剩下的数字只有一个 6 ,所有数的 lcm 为 6
示例2
输入
输出
解题思路
思维
多个数的最小公倍数为所有数分解质因数,对应幂次最大的质因数幂次方的乘积
考虑每个质因数的贡献,对于一个质因数 来说, 时,显然要找到 最大的 , 时,要找到 最大的
- 时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16037064.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!