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

 1 /*--------------------------------------------------------------------------------------*/
 2
 3 #include <algorithm>
 4 #include <iostream>
 5 #include <cstring>
 6 #include <ctype.h>
 7 #include <cstdlib>
 8 #include <cstdio>
 9 #include <vector>
10 #include <string>
11 #include <queue>
12 #include <stack>
13 #include <cmath>
14 #include <set>
15 #include <map>
16
17 //debug function for a N*M array
18 #define debug_map(N,M,G) printf("\n");for(int i=0;i<(N);i++)\
19 {for(int j=0;j<(M);j++){\
20 printf("%d",G[i][j]);}printf("\n");}
21 //debug function for int,float,double,etc.
22 #define debug_var(X) cout<<#X"="<<X<<endl;
23 #define LL long long
24 const int INF = 0x3f3f3f3f;
25 const LL LLINF = 0x3f3f3f3f3f3f3f3f;
26 /*--------------------------------------------------------------------------------------*/
27 using namespace std;
28
29 int N,M,T;
30 int MOD = 1e9+7;
31
32 int Eular(int n)
33 {
34     int ans = n;
35     for(int i=2;i*i<=n;i++)
36     {
37         if(n%i == 0)
38         {
39             ans -= ans/i;
40             while(n%i == 0) n/= i;
41         }
42     }
43     if(n>1) ans -= ans/n;
44     return ans;
45 }
46 int pow_mod(int x,int cnt)
47 {
48     int base = x%MOD,res = 1;
49     while(cnt)
50     {
51         if(cnt&1) {res *= base;res %= MOD;}
52         base *= base;base %= MOD;
53         cnt >>= 1;
54     }
55     return res;
56 }
57
58 int polya(int n,int m)
59 {
60     int res = 0;
61     int i;
62     for(i=1;i*i<n;i++)
63     {
64         if(n%i == 0)
65         {
66             res += Eular(i)%MOD * pow_mod(m,n/i-1)%MOD;res %= MOD;
67             res += Eular(n/i)%MOD * pow_mod(m,i-1)%MOD;res %= MOD;
68         }
69     }
70     if(i*i == n) res += Eular(i)%MOD*pow_mod(m,i-1)%MOD;
71     return res%MOD;
72 }
73
74 int main()
75 {
76     scanf("%d",&T);
77     while(T--)
78     {
79         scanf("%d%d",&N,&MOD);
80         printf("%d\n",polya(N,N));
81     }
82 }

转载于:https://www.cnblogs.com/helica/p/5823656.html

poj2154-color-polyan次二面体+欧拉函数优化相关推荐

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

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

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

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

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

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

  4. POJ2154(Pólya定理与欧拉函数优化)

    题目:Color 题意:将正n边形的n个顶点用n种颜色染色,问有多少种方案(答案mod p,且可由旋转互相得到的算一种) 先说说Pólya定理 设Q是n个对象的一个置换群,用m种颜色涂染这n个对象,一 ...

  5. 【4.3 欧拉函数详解】

    更好的阅读体验\color{red}{更好的阅读体验}更好的阅读体验 目录 4.3.1 公式法求欧拉函数 4.3.2 筛法求欧拉函数 概念 1∼N1∼N1∼N中与NNN互质的数的个数被称为欧拉函数,记 ...

  6. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

  7. 费马定理中值定理_数论-欧拉函数、欧拉定理

    欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...

  8. 【数学专题】约数个数与欧拉函数

    整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. 京东某女程序员求助:刚入职就意外怀孕,纠结还能不能过试用期?网友:职场女性太难!...
  2. Eclipse安装Database Development插件。
  3. QT的QGraphicsView类的使用
  4. (软件工程复习核心重点)第八章面向对象方法学习题
  5. PrintNightmare 漏洞的补丁管用吗?安全界和微软有不同看法
  6. python3读文件编码格式_使用不同的编码格式读取文件系统标准在Python3中
  7. 四大猛壳之一的VMProtect轻松保护你的程序
  8. mysql的dml全程是_MySQL中的DML、DDL、DCL到底是什么呢?
  9. 云数据库MySQL的发展史
  10. 微型计算机常常采用三种线结构,2016年河海大学929地理信息系统之地理信息系统概论考研复试题库...
  11. 医疗设备管理系统源码【免费分享源码】
  12. PPT批量导入文字(Python实现)
  13. 显卡RTX2080 + CUDA10 + win10 + tensorflow配置安装探坑记
  14. mac怎么无线打印机连接到服务器,Mac上wifi打印机怎么用 wifi打印机连接使用教程...
  15. 工作到现在的一些感想
  16. python古典问题兔子问题_古典兔子问题
  17. Allegro PCB Designer 16.6打开brd文件空白的方法
  18. 【手动安装Python包】
  19. 《汇编语言》第十章 call 和 ret 指令
  20. 信号强度 android,一种获取手机信号强度的方法

热门文章

  1. mysql字段优化_MySQL优化(1):字段的设计
  2. python私有属性怎么定义_Python中私有属性的定义方式
  3. 浅谈对html css的理解,HTML+CSS入门 CSS选择器 、属性和值浅谈
  4. 南京大学计算机考研机试,2018南大CS考研机试答案
  5. 蓝凌ekp开发_蓝凌EKP8.0产品白皮书(简).doc
  6. java调用npoi_NPOI导出数据到Excel
  7. java date类_Java的败笔-Date类
  8. bartender一行打印两个二次开发_C++ 智能指针和二叉树:图解层序遍历和逐层打印二叉树...
  9. Makefile和Shell学习笔记
  10. MySQL面试题 | 附答案解析(十九)