根据polya定理,答案应该是

\[\frac{1}{n}\sum_{i=1}^{n}n^{gcd(i,n)}
\]

但是这个显然不能直接求,因为n是1e9级别的,所以推一波式子:

\[\frac{1}{n}\sum_{i=1}^{n}n^{gcd(i,n)}
\]

\[=\frac{1}{n}\sum_{d|n}n^d\sum_{i=1}^{n}[gcd(i,n)==d]
\]

\[=\frac{1}{n}\sum_{d|n}n^d\sum_{i=1}^{\frac{d}{n}}[gcd(i,\frac{d}{n})==1]
\]

\[=\frac{1}{n}\sum_{d|n}n^d\varphi (\frac{d}{n})
\]

\[=\sum_{d|n}n^{d-1}\varphi (\frac{d}{n})
\]

这样就可以求了,但是注意时间还是很紧,所以开long long会T,求phi不预处理质数也会T

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int T,n,mod,ans,p[N],tot;
bool v[N];
int ksm(int a,int b)
{
int r=1;
a%=mod;
while(b)
{
if(b&1)
r=r*a%mod;
a=a*a%mod;
b>>=1;
}
return r;
}
int phi(int n)
{
int r=n;
for(int i=0;p[i]*p[i]<=n;i++)
if(n%p[i]==0)
{
r=r-r/p[i];
while(n%p[i]==0)
n/=p[i];
}
if(n>1)
r=r-r/n;
return r%mod;
}
int main()
{
for(int i=2;i<=100000;i++)
if(!v[i])
{
p[tot++]=i;
for(int j=i+i;j<100000;j+=i)
v[j]=1;
}
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&mod);
ans=0;
for(int i=1;i*i<=n;i++)
if(n%i==0)
{
ans=(ans+ksm(n,i-1)*phi(n/i))%mod;
if(i*i!=n)
ans=(ans+ksm(n,n/i-1)*phi(i))%mod;
}
printf("%d\n",ans);
}
return 0;
}

poj 2154 Color【polya定理+欧拉函数】的更多相关文章

  1. 【poj2154】Color Polya定理+欧拉函数

    题目描述 $T$ 组询问,用 $n$ 种颜色去染 $n$ 个点的环,旋转后相同视为同构.求不同构的环的个数模 $p$ 的结果. $T\le 3500,n\le 10^9,p\le 30000$ . 题 ...

  2. POJ2154 Color【 polya定理+欧拉函数优化】(三个例题)

    由于这是第一天去实现polya题,所以由易到难,先来个铺垫题(假设读者是看过课件的,不然可能会对有些“显然”的地方会看不懂): 一:POJ1286 Necklace of Beads :有三种颜色,问 ...

  3. poj2154Color polya定理+欧拉函数优化

    没想到贱贱的数据居然是错的..搞得我调了一中午+晚上一小时(哦不d飞LJH掉RP毕竟他是BUFF)结果重判就对了五次.. 回归正题,这题傻子都看得出是polya定理(如果你不是傻子就看这里),还没有翻 ...

  4. POJ2154 Color 【Polya定理 + 欧拉函数】

    题目 Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). ...

  5. poj2154(polya定理+欧拉函数)

    题目链接:http://poj.org/problem?id=2154 题意:n 种颜色的珠子构成一个长为 n 的环,每种颜色珠子个数无限,也不一定要用上所有颜色,旋转可以得到状态只算一种,问有多少种 ...

  6. 【POJ2154】Color Pólya定理+欧拉函数

    [POJ2154]Color 题意:求用$n$种颜色染$n$个珠子的项链的方案数.在旋转后相同的方案算作一种.答案对$P$取模. 询问次数$\le 3500$,$n\le 10^9,P\le 3000 ...

  7. Luogu4980 【模板】Polya定理(Polya定理+欧拉函数)

    对于置换0→i,1→i+1……,其中包含0的循环的元素个数显然是n/gcd(i,n),由对称性,循环节个数即为gcd(i,n). 那么要求的即为Σngcd(i,n)/n(i=0~n-1,也即1~n). ...

  8. POJ 2154 color (polya + 欧拉优化)

    Beads of N colors are connected together into a circular necklace of N beads (N<=1000000000). You ...

  9. poj 2154 Color(polya计数 + 欧拉函数优化)

    http://poj.org/problem?id=2154 大致题意:由n个珠子,n种颜色,组成一个项链.要求不同的项链数目.旋转后一样的属于同一种.结果模p. n个珠子应该有n种旋转置换.每种置换 ...

随机推荐

  1. mysql replication driver 在jdk1.6下失效问题解决

    mysql diver包里有relication driver,可以在jdbc层进行读写分离,主写从读默认的配置方式是指定driver为ReplicationDriver,并改写jdbc url一起j ...

  2. [luoguP1015] 回文数(模拟 + 高精度?)

    传送门 类似高精的操作... 代码 #include <cstdio> #include <cstring> #include <iostream> #define ...

  3. Mysql Replace语句的使用

    Mysql Replace语句的语法: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] VALUES ({expr ...

  4. [NOIP2005] 普及组 循环

    陶陶摘苹果 校门外的树 采药 以上三道都不是重点 循环 题目描述 乐乐是一个聪明而又勤奋好学的孩子.他总喜欢探求事物的规律.一天,他突然对数的正整数次幂产生了兴趣. 众所周知,2的正整数次幂最后一位数 ...

  5. cogs——644. 课程安排问题

    644. 课程安排问题 ★   输入文件:curriculum.in   输出文件:curriculum.out   简单对比时间限制:1 s   内存限制:128 MB 问题描述 一个软件专业的学生 ...

  6. docker容器-快速部署Jenkins

    1.在本地虚拟机环境.安装CentOS 7,并安装docker容器 2.在docker容器中执行  docker pull jenkinsci/blueocean 3.查看已经下载的Jenkins镜像 ...

  7. 选择器的使用(root选择器)

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  8. Java ThreadLocal 使用详解

    ThreadLocal的官方API解释为: "该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每 ...

  9. spring mvc 访问静态资源404

    访问比如css js出现404提示 在spring的配置文件中加上如下代码即可 <!-- 静态资源404 --> <mvc:resources location="/res ...

  10. MongoDB小结05 - update【$set & $unset】

    用$set指定一个键的值,如果不存在,就创建它.这对更新模式或者增加用户定义很有帮助. db.user.insert({"name":"codingwhy.com&quo ...