hdu 4187 Alphabet Soup
这题的主要就是找循环节数,这里用找字符串最小覆盖来实现,也就是n-next[n],证明在这http://blog.csdn.net/fjsd155/article/details/6866991
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<string>
#include<vector>
using namespace std;
__int64 mod=;
int dis[],data[],next[];
__int64 euler(__int64 n)
{
int i;
__int64 ans=;
for(i=;i*i<=n;i++)
if(n%i==)
{
ans*=i-;
n/=i;
while(n%i==)
{
ans*=i;
n/=i;
}
}
if(n>) ans*=n-;
return ans%mod;
}
int get_next(int n)
{
int i=,j=-;
next[]=-;
while(i<n)
{
if(j==-||dis[i]==dis[j])
{
i++;
j++;
next[i]=j;
}
else j=next[j];
}
i=n-j;
if(n%i)
return n;
return i;
}
__int64 pows(__int64 a,__int64 b)
{
__int64 ans=;
a%=mod;
while(b)
{
if(b&) ans=(ans*a)%mod;
b>>=;
a=(a*a)%mod;
}
return ans%mod;
}
__int64 polya(__int64 m,__int64 n)
{
int i,j;
__int64 ans=;
for(i=;i*i<=n;i++)
{
if(n%i==)
{
ans=(ans+pows(m,n/i)*euler(i)%mod)%mod;
if(i*i!=n)
ans=(ans+pows(m,i)*euler(n/i)%mod)%mod;
}
}
return (ans*pows(n,mod-))%mod;
}
int main()
{
int n,i,j,k,t,m,s,p;
while(cin>>s>>p)
{
if(s==-&&p==-) break;
for(i=;i<p;i++) cin>>data[i];
sort(data,data+p);
for(i=;i<p;i++)
dis[i]=data[i]-data[i-];
dis[]=-data[p-]+data[];
int len=get_next(p);
printf("%I64d\n",polya(pows(s,len),p/len));
}
return ;
}
hdu 4187 Alphabet Soup的更多相关文章
- hdu - 4782 - Beautiful Soup(模拟)
题意:输出一堆乱排版的html标签,去多余空字符,转换为按缩进输出. 题目链接:pid=4782">http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 4782 Beautiful Soup --模拟
题意: 将一些分散在各行的HTML代码整理成标签树的形式. 解法: 模拟,具体见代码的讲解. 开始没考虑 '\t' .. 代码: #include <iostream> #include ...
- HDU 4782 Beautiful Soup (模拟+注意细节)
思路就是用栈模拟,不用开实体的栈,直接记一个top指针就行. 说说这题的细节: 1.tag标签里的内容不要动,原样输出.比如<p aa bb cc>,就这样输出就行,不要删空格.题目中说了 ...
- Hessian 二进制RPC协议框架
Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议. 和其他Web服务的实现框架不同的是,Hessian是一个使用二进制轻量级的Web服务协议的框架,免除了许多附加的 ...
- java开发常用jar包介绍(转载)
jta.jar 标准JTA API必要 commons-collections.jar 集合类 必要 antlr.jar ANother Tool for Language Recognition ...
- 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 ...
- 常见 jar包详解
常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...
- WebService第二天
WebService第二天 课程安排:(CXF+HESSIAN) 框架CXF概述(是什么,SOA概述,下载安装) CXF快速入门(服务端.客户端开发,日志拦截器,SOAP版本相互调用的) CXF与sp ...
- JAR包介绍大全用途作用详解JAVA
jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar ANother Tool for Language Recognition 必要 ...
随机推荐
- js生成 1-100 不重复随机数
var count=100; var a=new Array(); for(var i=0;i<100;i++){ a[i]=i+1; } a.sort(function(){ return 0 ...
- Delphi XE5教程11:Tokens
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误!也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者可 ...
- Spark 大数据平台 Introduction part 2 coding
Basic Functions sc.parallelize(List(1,2,3,4,5,6)).map(_ * 2).filter(_ > 5).collect() *** res: Arr ...
- WPF 使用定时器
WPF 使用定时器:<ProgressBar Height="10" HorizontalAlignment="Left" Margin="28 ...
- 1096. Consecutive Factors (20)
Among all the factors of a positive integer N, there may exist several consecutive numbers. For exam ...
- linux 非缓冲io笔记
简介 在linux中,打开的的文件(可输入输出)标识就是一个int值,如下面的三个标准输入输出 STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO这三个是标准输入输出,对 ...
- Redis集群明细文档
Redis目前版本是没有提供集群功能的,如果要实现多台Redis同时提供服务只能通过客户端自身去实现(Memchached也是客户端实现分布式).目前根据文档已经看到Redis正在开发集群功能,其中一 ...
- 7、XAML的编译过程
对于动态皮肤场景来说,在运行时加载和解析XAML是有意义的,对于那些没有支持XAML编译的.NET语言也是有意义的.但大多数WPF项目会通过MSBuild和Visual Studio完成XAML编译. ...
- winrar 压缩文件方法
问题描述: 我要一些大的文件进行压缩,看了网上有很多类拟的写法.但在我这都存在两个问题. 1.就是他们都是通过注册表找到rar的exe目录.我安装好winrar后,虽然注册表有,但那个目录一直报一个错 ...
- 转字符驱动实例gpio
概述: 字符设备驱动程序: 是按照字符设备要求完成的由操作系统调用的代码. 重点理解以下内容: 1. 驱动是写给操作系统的代码,它不是直接给用户层程序调用的,而是给系统调用的 2. 所以驱动要向系 ...