POJ 2154 Color
来源:互联网 发布:剑网三李白脸型数据 编辑:程序博客网 时间:2024/05/17 05:17
用欧拉函数优化的polya原理
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 36000;int vis[maxn], prime[maxn];int T, n, p;void init(){ //素数筛 memset(vis, 0, sizeof(vis)); int tot = 0; for(int i = 2; i < maxn; i++) if(!vis[i]){ prime[tot++] = i; for(int j = i*i; j < maxn; j += i) vis[j] = 1; }}int phi(int n){ //求解欧拉函数 int ret = n; for(int i = 0; prime[i]*prime[i] <= n; i++){ if(n%prime[i] == 0){ ret -= ret/prime[i]; while(n%prime[i] == 0) n /= prime[i]; } } if(n > 1) ret -= ret/n; return ret;}int quick_pow(int a, int b, int p){ //快速幂 int ret = 1; a %= p; //注意这里,不然直接爆int while(b){ if(b&1) ret = (ret*a)%p; b >>= 1; a = (a*a)%p; } return ret;}int main(){ init(); scanf("%d", &T); while(T--){ scanf("%d%d", &n, &p); int ans = 0; for(int i = 1; i*i <= n; i++){ if(i*i == n) ans = (ans + phi(n/i)%p*quick_pow(n, i-1, p))%p; else if(n%i == 0) ans = (ans + phi(n/i)%p*quick_pow(n, i-1, p) + phi(i)%p*quick_pow(n, n/i-1, p))%p; } printf("%d\n", ans%p); } return 0;}
0 0
- POJ-2154 Color
- poj 2154 Color
- POJ 2154 Color
- poj 2154 Color
- POJ 2154 Color
- POJ 2154 Color
- POJ 2154 Color
- poj 2154 color
- POJ 2154 color 波利亚群置换
- POJ 2154 Color 【polya+dfs】
- POJ 2154 Color Ploya定理
- poj 2154 Color ----polya计数
- POJ 2154 Color(polya)
- poj 2154 Color( polya 计数)
- POJ 2154 Color(polya+欧几里得)
- Color POJ
- Color POJ
- Color POJ
- hexo和github page联合搭建博客过程中,github上出现灰色文件的问题
- maven创建webapp项目
- 算法入门(1)
- 用于检测进程的shell脚本代码小结
- CentOS(5.8/6.4)linux生产环境若干优化实战
- POJ 2154 Color
- CURL常用命令
- 原生js实现无缝滚动
- 任务调度框架Quartz
- VLC 接收H264、TS、PS流SDP写法
- 将Eclipse代码导入到Android Studio的两种方式
- 动态生成 ul 的li jquery 点击事件无法获取到li
- [生存志] 第107节 秦灭六国兼并天下
- 几种光源