2023ccpc河南省赛k题排列与质数题解

2023河南ccpc省赛k题排列与质数
摘要由CSDN通过智能技术生成

题目大意就是给你一个数n然后让你对n的全排列进行构造使数列的第i项和第(i%n+1)项的差的绝对值为一个质数。如果可以就输出任意一种排列,否则就输出-1。

这个题的思路就是我们要首先把大部分数构成符合这种规律的排列然后把其余的几个数看看能否插入其中。

具体说就是我们可以把两个数中间的差值控制为2或3这样的话这个数列中需要另外插入的数就会变少,我们可以根据n值的奇偶把排列分为两种情况:

1.n是奇数的话,大致排列就为1 ... ... n-8 n-6 n-4 n-2 n n-3 n-5 n-7 n-9 ... ... 4。
2.n为偶数的话,大致排列为 1 ... ... n-9 n-7 n-5 n-3 n n-2 n-4 n-6 n-8 ... ... 4。   
通过对比我们可以发现不管是奇数还是偶数只要按照这个规律进行排列除了2和n-1别的数都在这个排列中,那么下面我们只需要想办法把2和n-1放进这个数列就可以。

放进2比较简单,我们会发现可以把2放在5和7中间,至于n-1的话我们可以发现n-4 n-1 n-6和n-8 n-1 n-6这两种情况都成立,我们用哪种情况都可以,但是这里会出现一个特殊情况:比如我们要在n-4 和 n-6中间插入的话当n=11时我们会发现n-1插入的位置和之前插入2的位置重复了,这种情况我们只能把n-1插入到n-6和n-8之间。如果我们采用另一种插入方法时当n=13的时候也会出现这种情况,所以我们不论选择哪一种方法都需要对一种特殊情况进行特判。

上面说了这么多,总结了一些规律,但是我们会发现如果直接运用这个规律的话当n<10的时候有些情况输出出来是不成立的,这时候我们有两种办法:
第一种就是对n<10的进行暴力排列。
第二种是按照1 3 5 7 2 4 6 8的规律进行输出,我们会发现在n在5~

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值