#include <iostream> #include <map> using namespace std; int main() { int n; while (cin >> n) { // 注意 while 处理多个 case if (n <= 2) { cout << "-1\n"; } cout << "3 2 1 "; for (int i = 4; i <= n; ++i) { cout << i << " "; } // map<int, int> mp; // (i, ai) // for (int i = 1; i < n; ++i) { // for (int j = 1; ) // } cout << endl; } } // 64 位输出请用 printf("%lld")
这个题的描述看起来听吓人,而且给的一个示例没有规律可言。
发现,a==1时,最开始放到3位置才行,
这样推导2放到2位置,3放到1位置,然后发现,i放在i位置本身形成偶数就可以了。