hdu 5392 Infoplane in Tina Town (置换循环长度)
来源:互联网 发布:按键精灵免费网络验证 编辑:程序博客网 时间:2024/05/01 14:30
给一个置换,求循环长度,结果对3221225473取模。
有一个莫名其妙的定理:点击打开链接
根据该定理求最小公倍数就好了,用欧几里得算法求的话会TLE.
将每个循环长度分解质因子再求就好了。
坑点:模数用int是存不下的。
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define maxn 3000005typedef __int64 LI;const unsigned int mod=3221225473;int a[maxn],num[maxn];bool vis[maxn];inline LI pow1(LI a,LI b){ LI ans=1; while(b) { if(b&1) ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans;}int main(){ int t,i,j,n; cin>>t; while(t--) { scanf("%d",&n); for(i=1;i<=n;++i) { vis[i]=0; num[i]=0; scanf("%d",&a[i]); } for(i=1;i<=n;++i) { if(vis[i]) continue; int l=0; j=i; while(!vis[j]){ vis[j]=1; ++l; j=a[j]; } for(j=2;j<=l;++j) { int cnt=0; while(l%j==0) { ++cnt; l/=j; } if(cnt>num[j]) num[j]=cnt; } if(l>1) num[l]=max(1,num[l]); } LI ans=1; for(i=2;i<=n;++i) ans=ans*pow1(i,num[i])%mod; printf("%I64d\n",ans); } return 0;}
0 0
- hdu 5392 Infoplane in Tina Town (置换循环长度)
- HDOJ-5392 Infoplane in Tina Town(置换群循环节长度)
- hdu 5392 Infoplane in Tina Town
- HDU 5392 Infoplane in Tina Town
- HDU - 5392 Infoplane in Tina Town
- Infoplane in Tina Town HDU
- HDU 5392 Infoplane in Tina Town (置换+质因子分解求最小公倍数)
- hdu 5392 Infoplane in Tina Town(快速幂)
- HDOJ 5392 Infoplane in Tina Town LCM
- hdu 5392-Infoplane in Tina Town(质因子分解求最小公倍数)
- hdu 5392 Infoplane in Tina Town (质因子分解求最小公倍数)
- HDU-5392 Infoplane in Tina Town(分解质因数法求最小公倍数)
- hdu5392--Infoplane in Tina Town(置换群+质因子分解求最小公倍数)
- B、Infoplane in Tina Town-----(BestCoder Round #51 (div.2) )
- Zball in Tina Town HDU
- hdu 5391 Zball in Tina Town
- hdu 5391 Zball in Tina Town (数学)
- hdu 5391 Zball in Tina Town
- 再看“陈伟视频”理解多态机制 ——你还记得“橘子,苹果的例子么”
- Redis学习笔记(2)
- hdu 1108 最小公倍数
- ScrollView中ViewPager无法正常滑动问题
- Java类的生命周期详解
- hdu 5392 Infoplane in Tina Town (置换循环长度)
- hdu 1874 畅通工程续 dijsktra dijkstra+邻接表 优先队列 bellman-ford bellman-ford队列优化(基础题目,一步步优化)
- python_学习笔记0816
- 用两个栈实现队列
- CNN公式推导
- Xen API简介
- JAVA IO操作关键点
- NYOJ 22-素数求和问题
- java 基础(环境变量、)