【POJ2154】Color-Polya定理+欧拉函数
来源:互联网 发布:windows route 命令 编辑:程序博客网 时间:2024/05/21 10:02
测试地址:Color
题目大意:有
做法:前几天POJ炸了,所以拖到今天才写这一篇……
这一题需要用到Polya定理(真名不是这个o,但是那个字符不会打QAQ)+欧拉函数。
首先看Polya定理的内容:对于一个置换群
其中
那么再看这一题,容易看出
设
考虑到模意义下乘以一个分数比较困难,所以我们直接把
以下是本人代码:
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define ll long longusing namespace std;ll T,N,P,tot=0,fac[25],num[25],ans;void find_factor(){ ll s=N; tot=0; for(ll i=2;i*i<=s;i++) if (!(s%i)) { fac[++tot]=i; num[tot]=0; while(!(s%i)) s/=i,num[tot]++; } if (s>1) fac[++tot]=s,num[tot]=1;}ll phi(ll x){ ll s=x,ss=x; for(ll i=2;i*i<=s;i++) if (!(s%i)) { ss=ss/i*(i-1); while(!(s%i)) s/=i; } if (s>1) ss=ss/s*(s-1); return ss;}ll power(ll a,ll b){ ll s=a,sum=1; while(b) { if (b&1) sum=(sum*s)%P; b>>=1;s=(s*s)%P; } return sum;}void dfs(int i,ll d){ if (i>tot) { ans=(ans+phi(N/d)*power(N,d-1))%P; return; } for(int j=0;j<=num[i];j++) { dfs(i+1,d); d*=fac[i]; }}int main(){ scanf("%lld",&T); while(T--) { scanf("%lld%lld",&N,&P); find_factor(); ans=0; dfs(1,1); printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- 【POJ2154】Color-Polya定理+欧拉函数
- POJ2154 Color【Polya定理】【欧拉函数】【整数快速幂】
- poj2154 polya定理+欧拉函数
- POJ2154——Color(Polya定理+筛素数+欧拉函数)
- POJ2154 Polya+欧拉函数
- POJ 2154 Color Polya(Polya定理+欧拉函数)
- POJ 2154 Color Polya定理+欧拉函数
- POJ 2154 Color (Polya定理+欧拉函数)
- POJ 2154 Color (Polya定理&欧拉函数)
- POJ 2154 Color Polya定理+欧拉函数优化 -
- poj 2154 Color Polya定理 欧拉函数优化
- POJ 2154 Color Polya定理+欧拉函数优化
- POJ 2154 Color(polya定理+欧拉函数)
- POJ 2154 color(欧拉函数,Polya定理)
- POJ2154(Pólya定理与欧拉函数优化)
- POJ2154(Pólya定理与欧拉函数优化)
- poj 2154 Color(欧拉函数+Polya)
- POJ 2154 Color (polya 欧拉函数)
- Android按键分发流程之java层按键传递
- 利用javascript:void(0)制作假的提交按钮替代button
- 分布式存储系统简介
- 【UEditor】 第一次正常,第二次渲染失败(无法正常加载)问题
- XML教程05_元素
- 【POJ2154】Color-Polya定理+欧拉函数
- HTTP 状态码
- JEESZ分布式架构1--CentOs下安装jdk7(环境准备)
- 关于 spring aop (aspectj) 你该知晓的一切
- QT环境下实现UI界面的“拼图游戏”
- 业界难题-“跨库分页”的四种方案
- windows php安装redis扩展
- 使用SfntTool制作字体剪辑工具3
- java进阶(一) java 自动装箱与拆箱