首页 > 其他分享 >数位DP-1012. 至少有 1 位重复的数字

数位DP-1012. 至少有 1 位重复的数字

时间:2022-08-14 22:12:27浏览次数:60  
标签:示例 int res mask 重复 num DP 1012 数位

问题描述

给定正整数 n,返回在 [1, n] 范围内具有 至少 1 位 重复数字的正整数的个数。

示例 1:

输入:n = 20
输出:1
解释:具有至少 1 位重复数字的正数(<= 20)只有 11 。
示例 2:

输入:n = 100
输出:10
解释:具有至少 1 位重复数字的正数(<= 100)有 11,22,33,44,55,66,77,88,99 和 100 。
示例 3:

输入:n = 1000
输出:262

提示:

1 <= n <= 109

问题求解

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

        @cache
        def f(i, mask, is_limit, is_num):
            if i == len(s):
                return int(is_num)

            res = 0
            if not is_num:
                res += f(i + 1, mask, False, False)
            
            up = int(s[i]) if is_limit else 9
            for d in range(0 if is_num else 1, up + 1):
                if mask >> d & 1 == 0:
                    res += f(i + 1, mask | 1 << d, is_limit and d == up, True)
            
            return res
        
        return n - f(0, 0, True, False)

标签:示例,int,res,mask,重复,num,DP,1012,数位
From: https://www.cnblogs.com/hyserendipity/p/16586517.html

相关文章

  • 【luogu CF1710C】XOR Triangle(数位DP)
    XORTriangle题目链接:luoguCF1710C题目大意给你一个数n,要你求有多少个满足条件的a,b,c使得它们两两异或得到的三个值可以得到一个非退化三角形。其中a,b,c值域在......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • 树形dp
    ##1.换根dp1.kamp首先肯定它是换根dp因为最后一次不用回到起点,所以先不去想别的,最后再减去一个最长链设g\([i],\)为以i为根前往在这颗子树中的家的最小距离\(f[i],\)......
  • 数位DP-2出现的次数
    问题描述编写一个方法,计算从0到n(含n)中数字2出现的次数。示例:输入:25输出:9解释:(2,12,20,21,22,23,24,25)(注意22应该算作两次)提示:n<=10......
  • 拉格朗日插值优化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\)个点的方案......