题解 | #小红的排列构造#
小红的排列构造
https://www.nowcoder.com/practice/2b0a9318cc0740d1a78eec06162e7bea
解题思路
注意到所有大于 2 的偶数都是合数。
所以对于 i>3 的所有情况,令 a[i]=i 即可,因为 i+i 一定是偶数。
特别地, 1 2 3 对应 3 2 1 ,这样能构造出 4 4 4 ,也是偶数。
n<3 时无解,因为 1+1=2 ,1+2=3 ,都是素数。
代码
#include <iostream>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,i;
cin>>n;
if(n<3)
{
cout<<"-1";
return 0;
}
cout<<"3 2 1";
for(i=4;i<=n;++i)
cout<<' '<<i;
return 0;
}
import java.util.Scanner;
public class ZT7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt(),i;
if(n<3){
System.out.println(-1);
System.exit(0);
}
System.out.print("3 2 1");
for(i=4;i<=n;++i)
System.out.print(" "+i);
}
}
n=int(input())
if(n<3):
print(-1)
exit(0)
print(3,2,1,end=' ')
for i in range(4,n+1):
print(i,end=' ')
算法及复杂度
- 算法:枚举。
- 时间复杂度: 。
- 空间复杂度: 。