题解 | 小红的排列构造①
小红的排列构造①
https://www.nowcoder.com/practice/2b0a9318cc0740d1a78eec06162e7bea
C++
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; // n=1,2 无解 if (n==1 || n==2) { cout << -1; return 0; } vector<int> a; // ai+i 不是质数 // 令 ai=i 且 n奇 a[1]=n a[n]=1 n偶 a[1]=3 a[3]=1 -- 其实n奇只交换1、3也可 // n=3 [3,2,1] ok // n=4 [3,2,1,4] ok // n=5 [5,2,3,4,1] ok // n=6 [3,2,1,4,5,6] ok if (n%2) { cout << n << ' '; for (int i=1; i<n-1; i++) { cout << i+1 << ' '; } cout << 1 << ' '; } else { cout << 3 << ' '; for (int i=1; i<n; i++) { if (i==2) cout << 1 << ' '; else cout << i+1 << ' '; } } } // 64 位输出请用 printf("%lld")