POJ 2154 Color ——Burnside引理】的更多相关文章

[题目分析] 数据范围有些大. 然后遍求欧拉函数,遍求和就好了,注意取模. [代码] #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k) for (int i=j;i>=k;--i) #de…
Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7873   Accepted: 2565 Description Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of th…
题目:http://poj.org/problem?id=2154 置换的第二道题! 需要优化!式子是ans=∑n^gcd(i,n)/n (i∈1~n),可以枚举gcd=g,则有phi( n/g )个数与n的gcd是g. g是n的约数,成对出现,可以O(sqrt(n))枚举.用不断 /p 的log(n)做法求单个的phi.(不用专门看p是不是质数,此处可以保证一定是质数) 注意pw里的x传进去要先%mod!!!因为它是1e9级别的,一开始(x*=x)%=mod的时候会爆. 如果把n开成long…
链接:http://poj.org/problem?id=2154 题意:给出两个整数 N 和 P,表示 N 个珠子,N种颜色,要求不同的项链数, 结果 %p ~ 思路: 利用polya定理解~定理内容: 设是n个对象的一个置换群, 用m种颜色染图这n个对象,则不同的染色方案数为: 其中 , 为 的循环节数~     本题只有旋转一种置换方式,那么共有 N 个置换, 每个置换的循环节为 gcd(N,i)~ 那么结果为∑(N^(gcd(N, i))) %P.  N为 1e9, 不能枚举 i , 但…
Color Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7630   Accepted: 2507 Description Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of th…
http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链.要求不同的项链数目.旋转后一样的属于同一种.结果模p. n个珠子应该有n种旋转置换.每种置换的循环个数为gcd(i,n).假设直接枚举i,显然不行.可是我们能够缩小枚举的数目. 改为枚举每一个循环节的长度L,那么对应的循环节数是n/L.所以我们仅仅需求出每一个L有多少个i满足gcd(i,n)= n/L.就得到了循环节数为n/L的个数. 重点就是求出这种i的个数. 令cnt = gcd(i,…
这是道标准的数论优化的polya题.卡时卡的很紧,需要用int才能过.程序中一定要注意控制不爆int!!!我因为爆intWA了好久=_=…… 题目简洁明了,就是求 sigma n^gcd(i,n):但是由于n很大,所以直接暴力枚举必然会T.于是我们按照这种题的通常思路按gcd的值分类. gcd(i, n) = 1 的个数很明显为 phi(n); gcd(i, n) = 2 -> gcd(i/2, n/2) = 2 所以个数为 phi(n/2); 这样就ok了, 我们就是要求 sigma phi(…
和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫比乌斯反演白♂学了 最后结果为 $\frac{1}{n}\sum\limits_{d \mid n}n^d \phi (\frac{n}{d})$ 然后$\frac{1}{n}$可以放进去避免除法 然后欧拉函数显然需要现算,上午$T$了,改成筛质数之后算就好了 #include<iostream>…
Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). Your job is to calculate how many different kinds of the necklace can be produced. You should know that the necklace might not use up all the N colors, and…
枚举位移肯定超时,对于一个位移i.我们须要的是它的循环个数,也就是gcd(i,n),gcd(i,n)个数肯定不会非常多,由于等价于n的约数的个数. 所以我们枚举n的约数.对于一个约数k,也就是循环个数为n/k这种个数有phi[k]种,证明网上有非常多. 所以答案就是 phi[k]*(pow(n,n/k)) (k是n的全部约数) 因为约数会非常大所以不能打表,仅仅能单个算. 再因为最后要除以n,假设做除法就不能直接取模,所以我们在算每一次pow(n,n/k)的时候,都少乘一个n,这样就相当于除法了…