首页 > 试题广场 >

小红的排列构造①

[编程题]小红的排列构造①
  • 热度指数:3407 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小红希望你构造一个长度为 n 的排列 \{a_1,a_2,\dots,a_n\},使得对所有 1 \leqq i \leqq n,都有 a_i+i 不是质数。
\hspace{15pt}长度为 n排列是由 1 \sim nn 个正整数按任意顺序组成的数组,其中每个整数恰好出现一次。

\hspace{15pt}【名词解释】
\hspace{23pt}\bullet\,质数:大于 1 的正整数,如果它除了 1 和自身外不再有其他正整数因子,则称为质数
\hspace{23pt}\bullet\,排列:长度为 n 的排列是由 1 \sim nn 个整数按任意顺序组成的数组,其中每个整数恰好出现一次。

输入描述:
\hspace{15pt}在一行上输入一个整数 n\left(1 \leqq n \leqq 10^5\right),表示需要构造的排列长度。


输出描述:
\hspace{15pt}如果不存在满足条件的排列,在一行上输出 \texttt{-1};否则,在一行上输出 n 个整数 a_1,a_2,\dots,a_n 表示一个符合要求的排列。当存在多种可行方案时,输出任意一种均可。
示例1

输入

1

输出

-1

说明

长度为1的排列只有[1],由于1+1=2是质数,不合法。所以不存在可以构造的排列。
示例2

输入

10

输出

9 4 6 2 1 8 3 10 7 5

说明

\hspace{15pt}对于输出的排列: 
\hspace{23pt}\bullet\,a_1+1=9+1=10
\hspace{23pt}\bullet\,a_2+2=4+2=6
\hspace{23pt}\bullet\,a_3+3=6+3=9
\hspace{23pt}\bullet\,\dots
\hspace{15pt}全部 a_i+i 均不是质数,满足题意。
n = int(input())
if n == 1&nbs***bsp;n == 2:
    print(-1)
else:
    lst1 = [i for i in range(1,n+1)]
    lst1[0] = 3
    lst1[2] = 1
    print(*lst1)
所以这题真的不是脑筋急转弯吗?

发表于 2025-09-21 00:20:32 回复(0)