小红的排列构造
小红希望你构造一个排列,满足对于排列中的每一项
�
�
a
i
都满足:
�
�
+
�
a
i
+i均不是质数(下标
�
i从1开始)。你能帮帮她吗?
长度为
�
n的排列是指:一个长度为
�
n的数组,其中1到
�
n每个正整数恰好出现1次。例如[2,1,3]是排列,而[1,3,4,3]不是排列。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
一个正整数n,代表待构造的排列长度。
1\leq n \leq 10^5
输出描述:
如果无法构造,则输出-1。
否则输出一个长度为n的满足要求的排列。有多解时输出任意即可。
示例1
输入例子:
1
输出例子:
-1
例子说明:
长度为1的排列只有[1],由于1+1=2是质数,不合法。所以不存在可以构造的排列。
示例2
输入例子:
10
输出例子:
9 4 6 2 1 8 3 10 7 5
例子说明:
a_1+1=9+1=10,不是质数。
a_2+2=4+2=6,不是质数。
a_3+3=6+3=9,不是质数。
以此类推,每个元素a_i加上i均不是质数。符合要求。
这个题目很有趣哦,其实只需要修改前面3个就行了,因为从第4个开始,arr[x]+x,都是2*x,肯定不会是质数。
AC代码
#include
using namespace std;
int main()
{int n;cin>>n;if(n<3){cout<<-1<cout<<3<<" "<<2<<" "<<1<<" ";for(int i=4;i<=n;i++)cout<
上一篇:有关vue判断是否是空对象的问题