Python 程序:计算满足特定条件的 10000 位数字字符串数量
要解决这个问题,我们可以使用组合数学中的排列组合原理。具体步骤如下: 1. 每个位置可以选择1-9中的任意一个数字,但不能选择0。 2. 数字字符串中必须包含至少一个3和一个7。 我们可以先计算所有可能的数字字符串数量,然后减去不包含3或不包含7的情况。 具体实现如下: ```python MOD = 109 + 7 def count_valid_strings(n): # 所有可能的字符串数量:每个位置有9种选择(1-9),总共有9^n种 total = pow(9, n, MOD) # 不包含3的字符串数量:每个位置有8种选择(1-9中除去3),总共有8^n种 no_3 = pow(8, n, MOD) # 不包含7的字符串数量:每个位置有8种选择(1-9中除去7),总共有8^n种 no_7 = pow(8, n, MOD) # 既不包含3也不包含7的字符串数量:每个位置有7种选择(1-9中除去3和7),总共有7^n种 no_3_and_no_7 = pow(7, n, MOD) # 使用容斥原理计算包含至少一个3和一个7的字符串数量 valid = (total - no_3 - no_7 + no_3_and_no_7) % MOD return valid n = 10000 result = count_valid_strings(n) print(result) ``` 代码解释: - `total` 是所有可能的字符串数量,每个位置有9种选择(1-9),总共有 `9^n` 种。 - `no_3` 是不包含3的字符串数量,每个位置有8种选择(1-9中除去3),总共有 `8^n` 种。 - `no_7` 是不包含7的字符串数量,每个位置有8种选择(1-9中除去7),总共有 `8^n` 种。 - `no_3_and_no_7` 是既不包含3也不包含7的字符串数量,每个位置有7种选择(1-9中除去3和7),总共有 `7^n` 种。 - 使用容斥原理计算包含至少一个3和一个7的字符串数量:`total - no_3 - no_7 + no_3_and_no_7`。 需要注意的逻辑点: 1. 使用容斥原理时,要注意减去不包含3和不包含7的情况后,需要加回既不包含3也不包含7的情况,以避免重复减去。 2. 由于结果可能非常大,所以在每一步计算中都对 `10^9 + 7` 取余,以防止溢出。 3. `pow` 函数的第三个参数是模数,可以高效地计算大指数的模运算。 ######[AI写代码神器 | 618点数解答 | 2025-02-17 20:41:31]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)258
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)252
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)494
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)479
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)421
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)444
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)95
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)128
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)489
- C++ 实现:根据给定正整数构造 3×3 方阵并计算满足条件的方案数(阿里通义 | 875点数解答 | 2024-11-13 16:38:24)261
- C++实现:低复杂度求解 3×3 方阵构造方案数(阿里通义 | 708点数解答 | 2024-11-13 16:45:15)298
- Python 编程:计算 n 个正整数中小于 x 的数的总和(字节豆包 | 233点数解答 | 2025-08-02 21:35:03)313