bzoj2026: [SHOI2009]Coin
Description
Constantine刚结束在MySky Island的度假,正准备离开的时候,他想送给她的好朋友YY一份特别的礼物——MySky Island上特别的手工艺品宝石纪念币。宝石纪念币的一面上刻着小岛的名字MySky,或者收礼物的人,比如”to YY”。不过特别的是,每枚纪念币的反面,依次均匀的镶着一圈共n颗彩色的宝石。例如,下面是一个n=7时的简单例子:
因为纪念币是圆的,所以如果两种“宝石颜色的排布”如果经过旋转后对应位置的颜色相重合,就认为他们是相同的排布方式(请注意:纪念币只有一面镶宝石,所以两种排布若经过翻转以后是可以重合的,但只经过旋转无法使两者重合,则认为他们是不同的排布)。例如下面的两种排布方式就是相同的:
另外,由于MySky Island当地的习俗,每枚钱币上的宝石都只能嵌奇数颗宝石,不然就认为是不吉利的。宝石纪念币是现场制作的,游客可以选择自己喜欢的颜色的宝石。所以Constantine选出了他最喜欢的17种颜色(你如果要问为什么选这么多的话,只能告诉你因为17是他的幸运数字)。他想知道,如果他要求纪念币把这17种颜色的宝石都用上的话,可以制作出多少枚不同的纪念币。由于答案可能很大,你只需要计算答案的最后120位就可以了。
Input
输入文件只有一行,包含一个正奇数n 1< = N < =10^9
Output
输出文件包含1行,表示不同纪念币的枚数的最后120位。这120位从高位到低位依次输出,位数不足的用0在高位补足。
用burnside引理转化,矩阵乘法计算长度为n的序列,染上17种颜色且每种颜色都用上的方案数
def phi(x):
i=2
y=x;
while i*i<=x:
if x%i==0:
y=y//i*(i-1)
while x%i==0:
x//=i
i+=1
if x>1:
y=y//x*(x-1)
return y
def mul(a,b):
global mod
c=[0]*324
for i in range(18):
for k in range(i+1):
v=a[i*18+k]
if not v:
continue
for j in range(k+1):
c[i*18+j]+=v*b[k*18+j]
for i in range(324):
c[i]%=mod
return c
def cal(n):
global mod,ps,ans
if n<17:
return 0
x=[0]*324
for i in range(18):
x[i*19]=1
for i in range(32):
if n>>i&1:
x=mul(x,ps[i])
return x[17*18]
n=int(input())
ps=[[0]*324]
mod=10**120*n
for i in range(1,18):
ps[0][i*19]=i
ps[0][i*19-1]=1
for i in range(32):
ps.append(mul(ps[i],ps[i]))
ans=0
i=1
while i*i<=n:
if n%i==0:
j=n//i
ans+=cal(i)*phi(j)
if i!=j:
ans+=cal(j)*phi(i)
i+=1
for i in range(1,18):
ans*=i
ans=str(ans%mod//n)
print(""*(120-len(ans))+ans)
bzoj2026: [SHOI2009]Coin的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [LeetCode] Coin Change 硬币找零
You are given coins of different denominations and a total amount of money amount. Write a function ...
- 洛谷P2964 [USACO09NOV]硬币的游戏A Coin Game
题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...
- [luogu2964][USACO09NOV][硬币的游戏A Coin Game] (博弈+动态规划)
题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...
- LeetCode Coin Change
原题链接在这里:https://leetcode.com/problems/coin-change/ 题目: You are given coins of different denomination ...
- ACM Coin Test
Coin Test 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 As is known to all,if you throw a coin up and let ...
- HDOJ 2069 Coin Change(母函数)
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- leetcode:Coin Change
You are given coins of different denominations and a total amount of money amount. Write a function ...
- UVa 674 Coin Change【记忆化搜索】
题意:给出1,5,10,25,50五种硬币,再给出n,问有多少种不同的方案能够凑齐n 自己写的时候写出来方案数老是更少(用的一维的) 后来搜题解发现,要用二维的来写 http://blog.csdn. ...
随机推荐
- 'PostBuildEvent' failed with error code '1' 'Unspecified error'( PostBuildEvent”失败,错误代码为“1”。“未指定的错误” )
这种错误很坑,2年前遇到一次,现在有遇到了(主要记不得上次怎么解决了的) 主要在于js文件文件修改保存的时候得以ansi格式保存,不能以utf-8 http://files.cnblogs.com/f ...
- TEdit的 Clear 和 赋值 ''
function TControl.GetText: TCaption; var Len: Integer; begin Len := GetTextLen; SetString(Result, PC ...
- 去掉“Windows文件保护”
1.在“开始→运行”对话框中键入“gpedit.msc”,打开“本地计算机策略→计算机配置→管理模板→系统”窗口,找到“Windows文件保护”组,在右侧窗格中双击“设置Windows文件保护扫描”项 ...
- SharePoint Word Service-PowerShell
1. 配置转换进程 Set-SPWordConversionServiceApplication –Identity "Word Automation Services" –Act ...
- select * from v$reserved_words
select * from v$reserved_words 查询库中所有关键字
- 配置ssh互信的一个小问题记录
在我们安装集群软件时,经常需要配置机器之间的互信,每个人也有一套自己熟悉的方法. 但是在今天配置互信过程中,发现操作过程还是一样,但是就是不能互信,通过查找资料解决了,做一下记录. 我经常使用的方式: ...
- MySQL添加字段和修改字段
MySQL添加字段的方法并不复杂,下面将为您详细介绍MYSQL添加字段和修改字段等操作的实现方法,希望对您学习MySQL添加字段方面会有所帮助. 1添加表字段 alter table table1 a ...
- Android 网络教程: 开始
原文:Android Networking Tutorial: Getting Started 作者:Eunice Obugyei 译者:kmyhy 从 API 级别 1 开始,网络始终是 Andro ...
- IOS UIImage两种初始化的区别
UIImage可以通过以下两种方式进行初始化: 1 //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] 2 3 UIImage *imag ...
- TimeSpan格式化字符串格式(摘)
一直在用DateTime, 却不常用TimeSpan , 今天突然用到了, 发现不知道咋做格式化...百度一下,找到了答案, 在这记录一下, 免得以后找花费时间 以下内容摘抄自 Microsoft D ...