CodeForces Round 176Div1 A Lucky permutation

来源:互联网 发布:python uiautomator 编辑:程序博客网 时间:2024/05/16 14:45

题解:

举个例子比较好理解,比如1 2 3 4 5 ,6,7,8,1对应其序号+1,2对应8,于是7,8,分别对应1,7,剩下还有3,4,5,6注意到可以重复上述步骤,于是这是一个可行序列,于是可以得出结论,若n%4==0则按上述规则是可行的,若n%4==1,则可以证明是可行的,其余数不可以

#include <cstdio>#include <cstring>using namespace std;int main(){    int flag[100010];    memset(flag,0,sizeof(flag));    int n;    scanf("%d",&n);    if(n%4==3||n%4==2)    {        printf("-1\n");        return 0;    }    int cnt=n/4;    for(int i=1,j=1;i<=cnt;i++,j+=2)    {        flag[j]=j+1;        flag[j+1]=n-j+1;        flag[n-j+1]=n+1-flag[j];        flag[n-j]=n+1-flag[j+1];    }    if(n%4==1)        flag[n/2+1]=n/2+1;    for(int i=1;i<=n;i++)    {        if(i==n)            printf("%d\n",flag[i]);        else            printf("%d ",flag[i]);    }    return 0;}


原创粉丝点击