POJ 2409 Let it Bead [置换群 Polya]
2017-02-28 11:23
417 查看
传送门
题意:$m$种颜色$n$颗珠子,定义旋转和翻转两种置换,求不等价着色数
暴力求每个置换的循环节也许会$T?$
我们可以发现一些规律:
翻转:
$n$为奇数时每个置换有$1+\frac{n-1}{2}$个循环
$n$为偶数时穿过边的对称有$\frac{n}{2}$个循环,穿过点的有$\frac{n}{2}+1$个循环
旋转:
旋转$i$次的置换的循环个数为$gcd(n,i)$
可以这样想,从一个点开始每次走$i$步最后走到原位的最少步数$a$就是一个循环的长度
$ ai \equiv \pmod n$
$ i \mid ai,n \mid ai \rightarrow a=\frac{lcm(i,n)}{i}$
辣么$\frac{n}{a}=gcd(n,i)$就是循环个数啦
题意:$m$种颜色$n$颗珠子,定义旋转和翻转两种置换,求不等价着色数
暴力求每个置换的循环节也许会$T?$
我们可以发现一些规律:
翻转:
$n$为奇数时每个置换有$1+\frac{n-1}{2}$个循环
$n$为偶数时穿过边的对称有$\frac{n}{2}$个循环,穿过点的有$\frac{n}{2}+1$个循环
旋转:
旋转$i$次的置换的循环个数为$gcd(n,i)$
可以这样想,从一个点开始每次走$i$步最后走到原位的最少步数$a$就是一个循环的长度
$ ai \equiv \pmod n$
$ i \mid ai,n \mid ai \rightarrow a=\frac{lcm(i,n)}{i}$
辣么$\frac{n}{a}=gcd(n,i)$就是循环个数啦
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int N=1005; inline int read(){ char c=getchar();int x=0,f=1; while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();} return x*f; } int m,n; inline int Pow(int a,int b){ int re=1; for(;b;b>>=1,a*=a) if(b&1) re*=a; return re; } inline int gcd(int a,int b){return b==0?a:gcd(b,a%b);} int main(){ freopen("in","r",stdin); while(true){ m=read();n=read(); if(m==0&&n==0) break; int ans=0; for(int i=0;i<n;i++) ans+=Pow(m,gcd(n,i)); if(n&1) ans+=n*Pow(m,(n+1)>>1); else ans+=(n>>1)*Pow(m,n>>1)+(n>>1)*Pow(m,(n>>1)+1); ans/=n<<1; printf("%d\n",ans); } }
相关文章推荐
- poj2409--Let it Bead(置换群+polya奇数)
- 置换群Polya定理(poj 2409: Let it Bead)
- POJ 2409 Let it Bead(polya染色问题)
- poj 2409 Let it Bead——Polya
- [Polya] POJ 2409 Let it Bead
- POJ - 2409 - Let it Bead - (Polya定理)
- poj 2409 Let it Bead(polya 定理)
- poj 2409 Let it Bead(polya定理)
- Let it Bead POJ - 2409 Polya定理
- 【POJ 2409】 Let it Bead(Polya)
- NYOJ 280 LK的项链 &&POJ 2409 Let it Bead(polya 定理)
- POJ 2409 Let it Bead polya 定理 和 置换
- POJ 2409 Let it Bead(Polya定理)
- poj 2409 Let it Bead【polya定理+burnside引理】
- poj 1286 Necklace of Beads & poj 2409 Let it Bead(初涉polya定理)
- POJ 2409 Let it Bead(polya裸题)
- poj 2409 Let it Bead 项链旋转+对称群的polya计数
- POJ 2409 Let it Bead (Polya计数)
- POJ 2409 Let it Bead(Polya定理)
- poj 2409 Let it Bead (组合数学 polya计数法)