2. 小红的排列构造

小红的排列构造
小红希望你构造一个排列,满足对于排列中的每一项


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<<endl;
    }
    else {
    cout<<3<<" "<<2<<" "<<1<<" ";
    for(int i=4;i<=n;i++)
    cout<<i<<" ";
    }
    return 0;
}

你可能感兴趣的:(LeetCode,思维题,算法,c++,数据结构)