首页 > 其他分享 >数位DP-2出现的次数

数位DP-2出现的次数

时间:2022-08-14 20:44:09浏览次数:52  
标签:cnt return int res up 次数 limit DP 数位

问题描述

编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数。

示例:
输入: 25
输出: 9
解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次)
提示:

n <= 10^9

问题求解

class Solution:
    def numberOf2sInRange(self, n: int) -> int:
        s = str(n)

        @cache
        def f(i, is_limit, cnt):
            if i == len(s):
                return cnt
            
            res = 0
            up = int(s[i]) if is_limit else 9
            for d in range(0, up + 1):
                res += f(i + 1, is_limit and d == up, cnt + int(d == 2))
            return res
        
        return f(0, True, 0)

标签:cnt,return,int,res,up,次数,limit,DP,数位
From: https://www.cnblogs.com/hyserendipity/p/16586274.html

相关文章

  • 如何在Linux中按内存和CPU使用率查找运行次数最多的进程
    如何在Linux中按内存和CPU使用率查找运行次数最多的进程入门小站 入门小站 2022-07-1222:23 发表于湖北收录于合集#Linux478个#内存2个大多数Linux用......
  • 拉格朗日插值优化DP
    拉格朗日插值优化DP模拟赛出现神秘插值,太难啦!!回忆拉格朗日插值是用来做什么的对于一个多项式\(F(x)\),如果已知它的次数为\(m-1\),且已知\(m\)个点值,那么可以得到\[F(k......
  • P7154 [USACO20DEC] Sleeping Cows P(DP)
    主要是状态设计比较难想,但其实可以理性地推出来。P7154[USACO20DEC]SleepingCowsP考虑最终一个合法状态是怎么样的:一定是一堆小牛棚,一堆大奶牛,最大的牛棚小于最小的......
  • P6144 [USACO20FEB]Help Yourself P(DP+线段树)
    P6144[USACO20FEB]HelpYourselfP将线段按照了\(r\)排序,设右端点为\(r\)的答案为\(f_r\),发现这样转移非常困难。\(\color{yellow}{\bigstar\texttt{Trick}}\):区间......
  • CF559E Gerald and Path(DP)
    CF559EGeraldandPath设\(dp(i,p)\)表示完成前\(i\)条线段的覆盖,最右端位于\(p\)点的最大收益。转移?向下一条线段转移时加上他们中间的距离?发现这样没有办法统计......
  • CF856D Masha and Cactus(树上 DP+抵消贡献技巧)
    CF856DMashaandCactus我们先捞出一个根节点,那么一次旋变就是对路径上点的覆盖。设\(dp_{i,0}\)表示\(i\)没有选择时子树内最大收益,\(dp_{i,1}\)表示\(i\)选择......
  • CF512D Fox And Travelling(DP 计数)
    CF512DFoxAndTravelling给定一张\(n\)个点\(m\)条边的无向图,每次选择一个叶子结点并将它和连接它的边删除。对于每个\(k\in[0,n]\),问有序选择\(k\)个点的方案......
  • 【杂题乱写】AtCoder dp 26题
    AtCoderdp26题原比赛链接洛谷题单链接A-Frog1题目已然给出了转移方程,设\(dp_i\)为到第\(i\)块石头的最小代价。转移方程:\[dp_i=\min(dp_{i-1}+|h_i-h_{i-1}......
  • 【$dp$】$\text{LuoguP6570}$ 优秀子序列
    \(\text{LuoguP6570}\)优秀子序列读完题大概能yy到一个转移,即枚举两个不相交的子集然后转移。其实这题的顺序都无所谓,应该排个序,或者直接在值域上操作。\(DP\),用\(f......
  • 数位Dp
    代码拍卖会题意问有[L-R]有多少个数满足每一位都至少有1,从左到右不减同时要能被P整除,位数<=\(1e18\).p<=500)思路位数贼大,基本上别想着枚举有关位数的东西单调......