题目:Color

题意:将正n边形的n个顶点用n种颜色染色,问有多少种方案(答案mod p,且可由旋转互相得到的算一种)

先说说Pólya定理

设Q是n个对象的一个置换群,用m种颜色涂染这n个对象,一个对象涂任意一种颜色,则在Q作用下不等价的方案数为:   

|Q|为置换群中置换的个数,为将置换q表示成不相杂的轮换的个数,其中包括单轮换,m为颜色数。

分析可以知道本题方案的表达式为:

然后就直接代码了:

#include <stdio.h>
#include <string.h>
#define N 36000int p;int pr[N];
bool prime[N];
int k=0;void isprime()
{int i,j;memset(prime,true,sizeof(prime));for(i=2;i<N;i++){if(prime[i]){pr[k++]=i;for(j=i+i;j<N;j+=i){prime[j]=false;}}}
}int phi(int n)
{int rea=n,i;for(i=0;pr[i]*pr[i]<=n;i++){if(n%pr[i]==0){rea=rea-rea/pr[i];while(n%pr[i]==0)  n/=pr[i];}}if(n>1)rea=rea-rea/n;return rea%p;
}int quick_mod(int a,int b)
{int ans=1;a%=p;while(b){if(b&1){ans=ans*a%p;b--;}b>>=1;a=a*a%p;}return ans;
}int main()
{int i,t,n,ans;isprime();scanf("%d",&t);while(t--){ans=0;scanf("%d%d",&n,&p);for(i=1;i*i<=n;i++){if(i*i==n)ans=(ans+quick_mod(n,i-1)*phi(i))%p;else if(n%i==0)ans=(ans+quick_mod(n,i-1)*phi(n/i)+quick_mod(n,n/i-1)*phi(i))%p;}printf("%d\n",ans%p);}return 0;
}

POJ2154(Pólya定理与欧拉函数优化)相关推荐

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

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

  2. poj2154(Polya+欧拉函数优化模版)

    #include <cstdio> #include <cstring> #include<iostream> using namespace std; const ...

  3. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  4. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...

  5. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  6. java欧拉函数_欧拉函数(总结)

    定义 欧拉函数ϕ(n)是不超过n且和n互质的正整数的个数.欧拉函数φ(n)的作用就是转化,从而简化运算(小性质:n的所有质因子之和=eular(n)*n/2); 下面直观地看看欧拉函数: n 1 2 ...

  7. 初等数论--同余--欧拉函数、欧拉定理、费马小定理

    初等数论--同余--欧拉函数.欧拉定理.费马小定理 概念 同余类,既约同余类 欧拉函数 完全剩余系,既约剩余系 关于完全剩余系.既约剩余系一些比较简单的定理 欧拉定理.费马小定理 博主是初学初等数论( ...

  8. 素数的有关性质(二)欧拉函数的一些定理证明与计算

    文章目录 写在前面 内容回顾 模mmm剩余类环 定理 模ppp剩余类域 定义 欧拉函数的定义 欧拉函数的性质 命题1:欧拉函数等于与mmm互素整数个数 命题2:取值为素数ppp的欧拉函数等于p−1p- ...

  9. 欧拉函数定理及其性质

    欧拉函数就是指:给定一个n,求得1到n中与n互质的数的个数 再介绍欧拉通项前,首先得介绍唯一分解定理 那么求一个数的欧拉值的公式为: φ(n)=n * (1-1/P1) * (1-1/P2) * - ...

最新文章

  1. Mysql无限重启问题可能原因
  2. RHEL6基础四十三之RHEL文件共享②Samba简介
  3. 【数据结构与算法】之深入解析“贪心算法“的原理解析和算法实现
  4. Python简介-01-Python的起源
  5. avalon.js 转义html,avalon模块的内建适配器
  6. html div画圆有什么用,圆形div栏,用于评级html5 js(Circle div bar for rating html5 js)
  7. 关于mysql_free_result和mysql_close的解惑
  8. JavaScript调Java
  9. 【5分钟paper】基于强化学习的策略搜索算法的自主直升机控制
  10. 给跳槽的人 7 点建议
  11. 玩转spring boot——结合jQuery和AngularJs
  12. python快速排序时间复杂度-快速排序python实现总结
  13. 在eclipse环境下配置OpenCV环境
  14. [Altium Designer 2020 硬件设计]PCB封装库创建及3D模型添加
  15. 花呗的24期利息计算器_花呗分期利息怎么算(附计算公式大全)
  16. Let's encrypt 通配域名(二级, 三级)
  17. 计算机科学 杂志 撤稿,哈佛教授2篇顶刊遭撤稿:相同样品花样“复用”,伪装成不同实验结果...
  18. js一键复制并调起微信客户端
  19. python搬家具_python面向对象编程: 搬家具案例
  20. gpg生成秘钥时卡死

热门文章

  1. 数据源(连接池)开发步骤
  2. 循环尝试,不释放CPU
  3. SpringBoot高级-消息-@RabbitListener@EnableRabbit
  4. Spring Session官方介绍及spring框架学习方法
  5. php显示评委打分情况代码,评委打分表自动汇总计算得分
  6. android开发版本,Android开发之版本统一规范
  7. Spring Security源码解析(四)—— 过滤器
  8. 超详细 Spring Boot 知识清单
  9. POJ3070 矩阵快速幂模板
  10. python模块详解 time与date time