poj1721
Posted xuanyiming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1721相关的知识,希望对你有一定的参考价值。
题解:
直接暴力循环节
然后再做几次
代码:
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> const int N=1005; int n,s,p[N],a[N],B[N]; void GetNext(int n) { for (int i=1;i<=n;i++)B[i]=a[a[i]]; for (int i=1;i<=n;i++)a[i]=B[i]; } int IsSame(int n) { for (int i=1;i<=n;i++) if (B[i]!=p[i])return 0; return 1; } int main() { while (~scanf("%d%d",&n,&s)) { for (int i=1;i<=n;i++)scanf("%d",&p[i]),a[i]=p[i]; int res; for (res=1;;res++) { GetNext(n); if (IsSame(n))break; } int m=res-s%res; while (m--)GetNext(n); for (int i=1;i<=n;i++)printf("%d\n",B[i]); } return 0; }
以上是关于poj1721的主要内容,如果未能解决你的问题,请参考以下文章