HDU4259(简单群置换)
生活随笔
收集整理的這篇文章主要介紹了
HDU4259(简单群置换)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:Double Dealing
#include <iostream> #include <string.h>#define LL long long const int N=1005;int n,k; int a[N][N]; bool f[N]; int num[N];LL gcd(LL a,LL b) {return b? gcd(b,a%b):a; }int main() {int i,j;while(std::cin>>n>>k){if(n==0&&k==0) break;if(n<k){std::cout<<"1"<<std::endl;continue;}int m=1;for(i=1;i<=k&&i<=n;i++)for(j=(n-i)/k*k+i;j>0;j-=k)num[m++]=j;int x;LL res=1;memset(f,false,sizeof(f));for(i=1;i<=n;i++){x=i;if(f[i]) continue;int count=0;while(1){f[x]=true;x=num[x];count++;if(x==i) break;}res=res/gcd(res,count)*count;}std::cout<<res<<std::endl;}return 0; }
?
總結
以上是生活随笔為你收集整理的HDU4259(简单群置换)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最短路径之Floyd算法
- 下一篇: RMQ问题(区间求最值)