题意是说给出一个数字n,然后将1到n这些所有数字排列成一个数组,要求这个数组中对于i>3的数字满足
pi
≡
0
(
mod
|
pi
−
pi−2
|
)这个式子,其实就是满足对于所有的
pi
,都满足pi%(|pi−pi−2|)=0
就可以了。
这里其实直接分开去处理这两部分数就可以了,然后把这两组数岔开放,也就是说吧这个数组变成隔一个数之间的差的
是1的
一个数组,这样的话每次mod的数字都是1,得到的答案也就一定是0了。比如说对于6这个数字,直接分成123,45
6
这两部分,
然后再组合成142536就满足题目要求了。
下面AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int T;
int n,m;
int i,j,k;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
k=2;
if(n&1)
j=n/2+2;
else
j=n/2+1;
for(i=1;i<=n;i++)
{
if(i==1)
{
cout<<i;
continue;
}
if(i&1)
{
cout<<" "<<k;
k++;
}
else
{
cout<<" "<<j;
j++;
}
}
cout<<endl;
}
return 0;
}
pi
≡
0
(
mod
|
pi
−
pi−2
|
)