首 先 观 察 式 子 首先观察式子 首先观察式子
发 现 必 须 使 得 每 个 i 相 隔 n − i 的 距 离 , 这 样 可 以 使 答 案 为 0 发现必须使得每个i相隔n-i的距离,这样可以使答案为0 发现必须使得每个i相隔n−i的距离,这样可以使答案为0
构造方式也比较巧妙
1和1间需要相隔n-1的距离,刚好可以放在位置1和n上
3和3需要n-3的距离,刚好可以放在位置2和n-1上
…
所以奇数可以都放在区间[1,n]填满
偶数以相同方式填充在[n+1,2n]中,且数字n可以随便放,因为式子里计算怎么都是0
#include <bits/stdc++.h>
using namespace std;
int ans[1000009],n;
int main()
{
ios::sync_with_stdio(false);
cin >> n;
int l=1,r=n,x=1;
while( r>l )
{
ans[l++]=ans[r--]=x;
x+=2;
}
l=n+1,r=2*n-1,x=2;
while( r>l )
{
ans[l++]=ans[r--]=x;
x+=2;
}
for(int i=1;i<=2*n;i++)
{
if( ans[i] ) cout << ans[i];
else cout << n;
cout << " ";
}
}