当前位置:   article > 正文

第十五届蓝桥杯PythonB组B题数字串个数题解_第十五届蓝桥杯python大学b组

第十五届蓝桥杯python大学b组

在这里插入图片描述

思路

  1. 枚举 3 3 3 的个数以及 7 7 7 的个数,假设 3 3 3 的个数为 i i i 7 7 7 的个数为 j j j,那么非 3 , 7 3, 7 3,7 的个数即为 n − i − j n - i - j nij
  2. 在长度为 n n n 的字符串中选取 i i i 的方案数为 C n i C^i_n Cni,在剩余 n − i n - i ni 个位置选取 j j j 个的方案数为 C n − i j C^j_{n - i} Cnij,剩余位置个数为 n − i − j n - i - j nij,可选择的内容为 { 1 , 2 , 4 , 5 , 6 , 8 , 9 } \{1, 2, 4, 5, 6, 8, 9\} {1,2,4,5,6,8,9},共七个,故方案数为 7 n − i − j 7^{n - i - j} 7nij,乘积即为答案。
MOD = int(1e9 + 7)

def qmi(a, b):
    res = 1
    while b > 0:
        if b & 1:
            res = res * a % MOD
        a = a * a % MOD
        b >>= 1
    return res

n = 10000
N = int(1e4 + 10)
f = [[0 for i in range(N)] for i in range(N)]
def init():
    for i in range(0, n + 1):
        for j in range(0, i + 1):
            if j == 0:
                f[i][j] = 1
            else:
                f[i][j] = (f[i - 1][j] + f[i - 1][j - 1]) % MOD

init()

res = 0
for i in range(1, n - 1 + 1):
    for j in range(1, n - i + 1):
        res = (res + f[n][i] * f[n - i][j] * qmi(7, n - i - j)) % MOD

print(res)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

运行结果:

157509472
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/474470
推荐阅读
相关标签
  

闽ICP备14008679号