DP 练习(持续更新)

1.  https://atcoder.jp/contests/abc135/tasks/abc135_d  

题意 : 给一个只包含 '?' 和数字'0'~'9'的字符串,  可以把每个'?' 转换成 0 ~ 9 中的任意一个数字,求问整个字符串组成的数字中对13取膜后的余数为5的个数是多少. 由于答案很大,因此答案对1e9+7取模.

思路 : dp[i][j] 用前i个字符组成的数字对13取余的结果为j的个数是多少。。对13取余只有0~12这12种情况。如果当前字符是一个问号,那么我们从0~9对当前位置的数字进行枚举,然后我们发现,假设枚举当前位之前的数字是a, 当前数字用b代替,那么有如下的式子, (10 * a + b) % 13 =  (10 * (a % 13) + b % 13), 而 a % 13 是当前位之前的所有字符组成的数字对13取余得到的结果,因此也就可以根据i-1, 和i对13取余的式子很容易看出来怎么写转移方程了。边界条件是dp[0][0] = 1。最后我们需要的答案是dp[n][5]即为所求.。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容