首页 > [ZJOI2010]COUNT 数字计数
头像 重生之我要当分子
发表于 2024-12-27 01:18:00
解题思路 对于大范围 内的数字统计,需要使用数位DP的方法: 将问题转化为求 ,表示 到 中每个数字出现的次数 则区间 的答案为 对于计算 : 考虑每一位的贡献 例如对于数字 : 个位:每 个数, 各出现 次 十位:每 个数,每个数字在十位上出现 次 百位:每 个 展开全文
头像 bibibibi
发表于 2021-11-15 15:46:25
描述 给定一个区间[a,b][a,b][a,b],为在这个区间当中[0,9]每个数字出现在各个数位上的次数 思路 数位dp模板题目,设dp[i][j][k]dp[i][j][k]dp[i][j][k]表示考虑到第iii位,要计算的数是jjj,并且jjj之前出现了kkk次的方案数,采用记忆化搜索的方 展开全文
头像 朱越峰
发表于 2022-04-26 15:50:16
思路不是特别难以想到,但是计算流程繁琐,指针的数量大、位置易混淆。 考验的主要是耐心和细心。 def foo(a): """计算从0到a(含0和a)的所有整数中,各个数码出现的次数。""" k = len(str(a)) digs = list(map(int, list(s 展开全文
头像 偏门儿不邪门儿
发表于 2023-03-31 01:20:19
from functools import cache import sys @cache def f(check: int, i: int, nums_list: str, is_limited: bool, is_num: bool): count = 0 if is_lim 展开全文
头像 不要为打翻的牛奶哭泣
发表于 2025-05-08 20:45:21
对于大范围  内的数字统计,需要使用数位DP的方法:将问题转化为求 ,表示  到  中每个数字出现的次数则区间  的答案为 对于计算 :考虑每一位的贡献例如对于数字 :个位:每  个数, 各出现  次十位:每  个数,每个数字在十位上出现  次百位:每  个数,每个数字在百位上出现  次千位: 出现 展开全文
头像 牛客494732号
发表于 2023-05-23 18:35:35
package main import ( "fmt" ) func main() { var a,b int64 fmt.Scan(&a, &b) bNum := digNum(b) aNum := digNum(a-1) for i:= 0; 展开全文
头像 摸鱼学大师
发表于 2021-11-02 10:12:11
题目的主要信息: 求在[a,b][a,b][a,b]中的所有十进制整数中,数字0-9各出现了多少次 30%的数据中,a<=b<=106a<=b<=10^6a<=b<=106,100%的数据中,a<=b<=1012a<=b<=10^12a& 展开全文
头像 其实是牛哥
发表于 2021-10-19 16:02:35
数字计数 难度:5星 解法1 我们设 dp[i][j][k]dp[i][j][k]dp[i][j][k] 为长度为 iii ,首位是 jjj 的数字中 kkk 出现的次数。 推导递推关系时我们枚举长度为 iii 的数字中首位和次首位的数字,即可得递推关系 dp[i][j][p]=dp[i−1][k] 展开全文