题目大意就是给你一个数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~