小蓝最近在找一些奇怪的数其奇数数位上是奇数而偶数数位上是偶数。 同时这些数的任意 5 个连续数位的和都不大于 m 。 例如当 m = 9 时10101 和 12303 就是奇怪的数而 12345 和 11111 则不 是。 小蓝想知道一共有多少个长度为 n 的上述的奇怪的数。你只需要输出答案 对 998244353 取模的结果。PYTHON实现
思路:
首先考虑如何构造一个奇怪的数。我们可以从最高位开始,枚举当前位填入的数字,如果当前位是奇数位,则填入一个奇数,如果当前位是偶数位,则填入一个偶数。然后递归构造下一位。
接下来考虑如何判断一个数是否奇怪。我们可以从最低位开始,对于每个连续的 5 位求和,如果和大于 m,则这个数不是奇怪的。如果所有的连续 5 位和都小于等于 m,则这个数是奇怪的。
最后,我们考虑如何计算长度为 n 的奇怪数的个数。我们可以从最高位开始,枚举当前位填入的数字,如果当前位是奇数位,则填入一个奇数,如果当前位是偶数位,则填入一个偶数。然后递归构造下一位。如果当前位是第 n 位,则判断这个数是否奇怪,如果是奇怪的,则累加答案。
代码:
原文地址: https://www.cveoy.top/t/topic/bLMY 著作权归作者所有。请勿转载和采集!