poj 1721 CARDS (置换群)

来源:互联网 发布:内衣品牌推荐 知乎 编辑:程序博客网 时间:2024/06/14 03:27
//给出置换了s次后的序列,求原序列# include <stdio.h># include <algorithm># include <string.h>using namespace std;int main(){    int n,s,t,s1,i,cot;    int a[1010],b[1010],c[1010];    while(~scanf("%d%d",&n,&s))    {        for(i=1; i<=n; i++)        {            scanf("%d",&a[i]);            b[i]=a[i];            c[i]=a[i];        }        cot=0;        while(1)//求循环节        {            cot++;            for(i=1; i<=n; i++)                b[i]=c[c[i]];            for(i=1; i<=n; i++)            {                if(a[i]!=b[i])                    break;            }            if(i>n)                break;            for(i=1; i<=n; i++)                c[i]=b[i];        }        s%=cot;        s=cot-s;        while(s--)        {            for(i=1; i<=n; i++)                b[i]=a[a[i]];            for(i=1; i<=n; i++)                a[i]=b[i];        }        for(i=1; i<=n; i++)            printf("%d\n",b[i]);    }    return 0;}

0 0
原创粉丝点击