这题的主要就是找循环节数,这里用找字符串最小覆盖来实现,也就是n-next[n],证明在这http://blog.csdn.net/fjsd155/article/details/6866991

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<iomanip>
  5. #include<cmath>
  6. #include<string>
  7. #include<vector>
  8. using namespace std;
  9. __int64 mod=;
  10. int dis[],data[],next[];
  11. __int64 euler(__int64 n)
  12. {
  13. int i;
  14. __int64 ans=;
  15. for(i=;i*i<=n;i++)
  16. if(n%i==)
  17. {
  18. ans*=i-;
  19. n/=i;
  20. while(n%i==)
  21. {
  22. ans*=i;
  23. n/=i;
  24. }
  25. }
  26. if(n>) ans*=n-;
  27. return ans%mod;
  28. }
  29. int get_next(int n)
  30. {
  31. int i=,j=-;
  32. next[]=-;
  33. while(i<n)
  34. {
  35. if(j==-||dis[i]==dis[j])
  36. {
  37. i++;
  38. j++;
  39. next[i]=j;
  40. }
  41. else j=next[j];
  42. }
  43. i=n-j;
  44. if(n%i)
  45. return n;
  46. return i;
  47. }
  48. __int64 pows(__int64 a,__int64 b)
  49. {
  50. __int64 ans=;
  51. a%=mod;
  52. while(b)
  53. {
  54. if(b&) ans=(ans*a)%mod;
  55. b>>=;
  56. a=(a*a)%mod;
  57. }
  58. return ans%mod;
  59. }
  60. __int64 polya(__int64 m,__int64 n)
  61. {
  62. int i,j;
  63. __int64 ans=;
  64. for(i=;i*i<=n;i++)
  65. {
  66. if(n%i==)
  67. {
  68. ans=(ans+pows(m,n/i)*euler(i)%mod)%mod;
  69. if(i*i!=n)
  70. ans=(ans+pows(m,i)*euler(n/i)%mod)%mod;
  71. }
  72. }
  73. return (ans*pows(n,mod-))%mod;
  74. }
  75. int main()
  76. {
  77. int n,i,j,k,t,m,s,p;
  78. while(cin>>s>>p)
  79. {
  80. if(s==-&&p==-) break;
  81. for(i=;i<p;i++) cin>>data[i];
  82. sort(data,data+p);
  83. for(i=;i<p;i++)
  84. dis[i]=data[i]-data[i-];
  85. dis[]=-data[p-]+data[];
  86. int len=get_next(p);
  87. printf("%I64d\n",polya(pows(s,len),p/len));
  88. }
  89. return ;
  90. }

hdu 4187 Alphabet Soup的更多相关文章

  1. hdu - 4782 - Beautiful Soup(模拟)

    题意:输出一堆乱排版的html标签,去多余空字符,转换为按缩进输出. 题目链接:pid=4782">http://acm.hdu.edu.cn/showproblem.php?pid= ...

  2. HDU 4782 Beautiful Soup --模拟

    题意: 将一些分散在各行的HTML代码整理成标签树的形式. 解法: 模拟,具体见代码的讲解. 开始没考虑 '\t' .. 代码: #include <iostream> #include ...

  3. HDU 4782 Beautiful Soup (模拟+注意细节)

    思路就是用栈模拟,不用开实体的栈,直接记一个top指针就行. 说说这题的细节: 1.tag标签里的内容不要动,原样输出.比如<p aa bb cc>,就这样输出就行,不要删空格.题目中说了 ...

  4. Hessian 二进制RPC协议框架

    Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议. 和其他Web服务的实现框架不同的是,Hessian是一个使用二进制轻量级的Web服务协议的框架,免除了许多附加的 ...

  5. java开发常用jar包介绍(转载)

    jta.jar 标准JTA API必要 commons-collections.jar 集合类 必要 antlr.jar  ANother Tool for Language Recognition ...

  6. A trip through the Graphics Pipeline 2011_03

    At this point, we’ve sent draw calls down from our app all the way through various driver layers and ...

  7. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

  8. WebService第二天

    WebService第二天 课程安排:(CXF+HESSIAN) 框架CXF概述(是什么,SOA概述,下载安装) CXF快速入门(服务端.客户端开发,日志拦截器,SOAP版本相互调用的) CXF与sp ...

  9. JAR包介绍大全用途作用详解JAVA

    jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar  ANother Tool for Language Recognition 必要 ...

随机推荐

  1. 获取Class对象的方法及Class类型的一些讨论

    (1)Class.forName(className) (2)classname.Class 如果是数组,则是数组类型[].class (3)对象.getClass() 例: String path ...

  2. (转)Jmeter内存溢出处理方式记录

    方法一: 使用jmeter进行压力测试时 遇到一段时间后报内存溢 出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS="- Xmx20 ...

  3. [精校版]The Swift Programming Language

    通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现:  println("hello, world")   如 ...

  4. Windows 下 Composer 与 Laravel 4 的安装

    1.安装Composer Composer是PHP的依附经管对象之一,官方网站 http://getcomposer.org/ .它支撑多种安装体式格式,对于在win下做开辟的草来说,最便捷的体式格式 ...

  5. android 在标题栏加上按钮

    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowF ...

  6. 【转】如何在 Windows 中执行干净启动

    完成故障排除后,请执行以下步骤将计算机重置为正常启动. Windows 8.1 和 Windows 8 从屏幕右边缘滑入,然后点按“搜索”.您也可以将鼠标指向屏幕的右下角,然后单击“搜索”. 在搜索框 ...

  7. 管道和FIFO

    pipe 子进程从终端读取一个文件名, 通过管道将文件名传递给父进程 父进程收到文件名后, 读取文件内容并通过管道传递给子进程 子进程接收到文件内容并输出到终端 #include <stdio. ...

  8. MySQL性能优化的最佳20+套经验

      今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操 ...

  9. JAVA SSH 框架介绍

    SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架, ...

  10. OpenCV之mixChannels()函数使用说明

    step 1: 函数功能说明 mixChannels主要就是把输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数制定. step ...