代码拉取完成,页面将自动刷新
# -*- coding: utf-8 -*-
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/8/18
# @File : cses Dice Combinations.py
# https://cses.fi/problemset/task/1633/
#基础线性DP,骰子组合
def dp_dice1():#优化的方法,用前缀和思路代替SUM函数操作
dp = [1]
a = 1
for i in range(1, n + 1):
if i <= dice:
dp.append(a)
a += dp[i]
else:
a -= dp[i - dice - 1]
dp.append(a % (10 ** 9 + 7))
a += dp[i]
return dp[-1]
def dp_dice():
dp = [1] * (n + 1)
for i in range(1, n + 1):
if i <= dice:
dp[i] = sum(dp[:i])
else:
dp[i] = sum(dp[i - dice:i]) % (10 ** 9 + 7)
return dp[n]
"""
由于这个数实在是太大的,一个列表格子都装不下这么大的数,所以在过程中也要进行取模操作,不能就只在最后输出结果的时候取模,这样会RE。
"""
"""
思路:对于每一个n,都可以由n-6、n-5、……、n-1的六种方法数相加得到,因为他们再抛一次骰子(六种可能)就可以得到n。
细节:n小于等于6和大于6的处理不一样。因为前者可以由一次抛骰子得到,所以初始化的时候dp[0]要设为1。
n小于等于6时:每一个n都由前面的全部的方法数相加得到,因为前面的总共都不到6个数
"""
if __name__ == '__main__':
n = int(input())
dice = 6
res = dp_dice()
print(res % (10 ** 9 + 7))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。