【洛谷P2000】拯救世界

题目

题目描述
为了拯救世界,小 a 和 uim 决定召唤出 kkksc03 大神和 lzn 大神。根据古籍记载,召唤出任何一位大神,都需要使用金木水火土五种五行神石来摆一个特定的大阵。而在古籍中,记载是这样的:

kkksc03 大神召唤方法:

金神石的块数必须是 66 的倍数。

木神石最多用 99 块。

水神石最多用 55 块。

火神石的块数必须是 44 的倍数。

土神石最多用 77 块。

lzn 大神召唤方法:

金神石的块数必须是 22 的倍数。

木神石最多用 11 块。

水神石的块数必须是 88 的倍数。

火神石的块数必须是 1010 的倍数。

土神石最多用 33 块。

现在是公元 1999 年 12 月 31 日,小 a 和 uim 从 00:00:00 开始找,一直找到 23:00:00,终于,还是没找到神石。不过,他们在回到家后在自家地窖里发现了一些奇怪的东西,一查古籍,哎呦妈呀,怎么不早点来呢?这里有一些混沌之石,可以通过敲击而衰变成五行神石。于是,他们拼命地敲,终于敲出了n块神石,在 23:59:59 完成了两座大阵。然而,kkksc03 大神和 lzn 大神确实出现了,但是由于能量不够,无法发挥神力。只有把所有用 nn 块神石可能摆出的大阵都摆出来,才能给他们充满能量。这下小 a 和 uim 傻了眼了,赶快联系上了你,让你帮忙算一下,一共有多少种大阵。

输入格式
输入一个正整数 nn。

输出格式
输出用 nn 块混沌之石能摆出的大阵的种数。

输入输出样例
输入 #1 复制
2
输出 #1 复制
15
说明/提示
数据范围:

10^{100000}\leq n\lt 10^{100001}10
100000
≤n<10
100001

提示
由于现在已经是 23:59:59,所以你只有 0.5\texttt s0.5s 时间。(小 a 与 uim 需要 0.5\texttt s0.5s 排出所有阵法)

思路

生成函数模板题
kkksc03:
金: 1 + x 6 + x 12 + ⋯ = 1 1 − x 6 1+x^6+x^{12}+\dots=\frac{1}{1-x^6} 1+x6+x12+=1x61
木: 1 + x + x 2 + ⋯ + x 9 = 1 − x 10 1 − x 1+x+x^2+\dots+x^9=\frac{1-x^{10}}{1-x} 1+x+x2++x9=1x1x10
水: 1 + x + x 2 + ⋯ + x 5 = 1 − x 6 1 − x 1+x+x^2+\dots+x^5=\frac{1-x^6}{1-x} 1+x+x2++x5=1x1x6
火: 1 + x 4 + x 8 + ⋯ = 1 1 − x 4 1+x^4+x^8+\dots=\frac{1}{1-x^4} 1+x4+x8+=1x41
土: 1 + x + x 2 + ⋯ + x 7 = 1 − x 8 1 − x 1+x+x^2+\dots+x^7=\frac{1-x^8}{1-x} 1+x+x2++x7=1x1x8

lzn:

金: 1 + x 2 + x 4 + ⋯ = 1 1 − x 2 1+x^2+x^4+\dots=\frac{1}{1-x^2} 1+x2+x4+=1x21
木: 1 + x = 1 − x 2 1 − x 1+x=\frac{1-x^2}{1-x} 1+x=1x1x2
水: 1 + x 8 + x 16 + ⋯ = 1 1 − x 8 1+x^8+x^{16}+\dots=\frac{1}{1-x^8} 1+x8+x16+=1x81
火:​ 1 + x 10 + x 20 + ⋯ = 1 1 − x 10 1+x^{10}+x^{20}+\dots=\frac{1}{1-x^{10}} 1+x10+x20+=1x101
土: 1 + x + x 2 + x 3 = 1 − x 4 1 − x 1+x+x^2+x^3=\frac{1-x^4}{1-x} 1+x+x2+x3=1x1x4

用c++要打NTT,所以我选择ruby

代码

n = gets.to_i
print (n + 1) * (n + 2) * (n + 3) * (n + 4) / 24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值