polya定理。等价类的个数等于∑颜色数^置换的轮换个数

不可翻转的串当中。直接计算∑m^(gcd(n,i)) ,这里gcd(n,i)就是第i个置换的轮换数。

翻转的情况再分n奇偶讨论。

n次二面体都是这个套路。

  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=;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. const LL MOD = 1e9+;
  31.  
  32. LL pow_mod(LL x,LL cnt)
  33. {
  34. LL base = x,res = ;
  35. while(cnt)
  36. {
  37. if(cnt&) {res*=base;res%=MOD;}
  38. base *= base;base %= MOD;
  39. cnt >>= ;
  40. }
  41. return res%MOD;
  42. }
  43. LL inv(LL x,LL m)
  44. {
  45. return pow_mod(x,m-);
  46. }
  47. LL polya(LL n,LL m)
  48. {
  49. LL res = ;
  50. for(int i=;i<=n;i++)
  51. {
  52. res += pow_mod(m,__gcd((LL)i,n));
  53. res %= MOD;
  54. }
  55.  
  56. if(n&) res += n*pow_mod(m,n/+);
  57. else res += (n*pow_mod(m,n/))%MOD*inv(,MOD)%MOD + (n*pow_mod(m,n/+))%MOD*inv(,MOD)%MOD ;
  58.  
  59. res %= MOD;
  60. res *= inv(*n,MOD);
  61.  
  62. return res%MOD;
  63. }
  64.  
  65. int main()
  66. {
  67. scanf("%d",&T);
  68. int cas = ;
  69. while(T--)
  70. {
  71. scanf("%d%d",&M,&N);
  72. printf("Case #%d: %lld\n",++cas,polya(N,M));
  73. }
  74. }

HDU3923-Invoker-polya n次二面体的更多相关文章

  1. HDU 3923 Invoker(polya定理+乘法逆元(扩展欧几里德+费马小定理))

    Invoker Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 122768/62768K (Java/Other) Total Subm ...

  2. HDU 3923 Invoker(polya定理+逆元)

    Invoker Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 122768/62768 K (Java/Others)Total Su ...

  3. HDU 3923 Invoker 【裸Polya 定理】

    参考了http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove 的模板 对于每一种染色,都有一个等价群,例如旋转, ...

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

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

  5. 《程序设计中的组合数学》——polya计数

    我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...

  6. Polya计数

    Let it Bead Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5365   Accepted: 3585 Descr ...

  7. [ACM] hdu 3923 Invoker (Poyla计数,高速幂运算,扩展欧几里得或费马小定理)

    Invoker Problem Description On of Vance's favourite hero is Invoker, Kael. As many people knows Kael ...

  8. polya/burnside 学习

    参考链接: http://www.cnblogs.com/hankers/archive/2012/08/03/2622231.html http://blog.csdn.net/raalghul/a ...

  9. 【转】Polya定理

    转自:http://endlesscount.blog.163.com/blog/static/82119787201221324524202/ Polya定理 首先记Sn为有前n个正整数组成的集合, ...

随机推荐

  1. maven 错误No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format

    [INFO] Scanning for projects... [INFO] ------------------------------------------------------------- ...

  2. Android分辨率适配心得

    关于Android分辨率适配,这个是Android开发很头疼的一个问题,也需要花费相当一部分开发时间处理的一个问题,往往一个界面怎么适配就得想半天,特别是新手,也经常有人问我是怎么适配分辨率的,我也不 ...

  3. 在Web api2 中传递复杂参数的一点心得

    这两天在做的一个项目基于webapi2,期间遇到了复杂参数传递的问题.其中刚好看到园友的这篇文章,但是我测试收结果是失败的,还不知道是什么原因.最终经过思考后,找到了一种方法,和大家分享下. 在前端我 ...

  4. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结

    Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...

  5. 启动rabbitmq web管理后台插件

    安装完rabbitmq server之后,访问http://server_ip:15672/  无法打开网页, 通过netstat -ano |grep 15672 查看此端口号并没有开启 需要启用 ...

  6. XSLT

    一.简介 XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言. XSL(eXtensible Stylesheet Language) -- 可扩展标记语言,主要用 ...

  7. find type d 命令批量删除禁用

    [root@qike ~]# find  /usr/local/sbin/  -type d  /usr/local/sbin//usr/local/sbin/2/usr/local/sbin/g/u ...

  8. Python 基本类型转换

    python 有关字符串处理有哪些好用的方法?reverse len 字符串分割,合并?截取?查找? find index join split unicode字符串的表示 ""& ...

  9. 免费微信公众号专用h5在线电影票API

    免费h5在线电影票API,通过嵌套返回的h5页面url,实现电影票购买. 接口文档:https://www.juhe.cn/docs/api/id/252,通过此申请APPKEY 接口备注:通过请求返 ...

  10. HDU 4445 Crazy Tank --枚举

    题意: n个物体从高H处以相同角度抛下,有各自的初速度,下面[L1,R1]是敌方坦克的范围,[L2,R2]是友方坦克,问从某个角度抛出,在没有一个炮弹碰到友方坦克的情况下,最多的碰到敌方坦克的炮弹数. ...