P9578题解
题意
给定一个正整数
从任意数开始顺序输出这个排列。
思路
我们首先最小化最大值,此时
接着最大化最小值,同理,
再思考一种可行的构造方法,由于是环形,可以将
对于任意一个数,可以证明,其与它相邻数的和恰为
代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a,b[1000010];
signed main() {
cin>>a;
int l=1,r=a;
while(l<=r){
if(l%2==1){
b[l]=l;
b[r]=r;
}else{
b[r]=l;
b[l]=r;
}
l++;
r--;
}
for(int i=1;i<=a;i++){
cout<<b[i]<<" ";
}
return 0;
}
//1 7 3 5 4 6 2 8