数字的游戏(数位dp)

简介: 数字的游戏(数位dp)
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int f[N][10];
int l,r;
void init()
{
    for(int i=0;i<=9;i++) f[1][i]=1;
    for(int i=2;i<=N;i++)
    {
        for(int j=0;j<=9;j++)
        for(int k=j;k<=9;k++)
        f[i][j]+=f[i-1][k];
    }
}
int cal(int n)
{
    if(!n) return 1;
    vector<int>num;
    while(n) num.push_back(n%10),n/=10;
    int last=0;
    int res=0;
    for(int i=num.size()-1;i>=0;i--)
    {
        int x=num[i];
        if(x<last) break;
        for(int j=last;j<x;j++)
        {
            res+=f[i+1][j];
        }
        last=x;
        if(!i) res++;
    }
    return res;
}
int main()
{
    init();
    while(~scanf("%d%d",&l,&r))
    {
        cout<<cal(r)-cal(l-1)<<"\n";
    }
    return 0;
}
目录
相关文章
|
6月前
|
存储 算法 大数据
数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015
数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015
|
6月前
数字游戏2(数位dp)
数字游戏2(数位dp)
39 0
【Leetcode -367.有效的完全平方数 -374.猜数字大小】
【Leetcode -367.有效的完全平方数 -374.猜数字大小】
45 0
|
5月前
|
C++
【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(字符串)
**NOIP2011普及组题目:给定整数N,反转其位得到新数。新数首位非0(除非N=0)。输入0时直接输出0,其他情况输出反转后的数,考虑负数及前导0。提供的C++代码实现通过读入字符串,反转数字顺序并处理符号和前导0。**
33 0
|
6月前
每日一题来噜!(记负均正,旋转数组中的最小数字)
每日一题来噜!(记负均正,旋转数组中的最小数字)
33 1
|
6月前
|
C++
【PTA】L1-056 猜数字 (C++)
【PTA】L1-056 猜数字 (C++)
81 0
【PTA】L1-056 猜数字 (C++)
|
算法
算法:数字涂色
算法:数字涂色
算法练习第九天——只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
|
Python
LeetCode 374. 猜数字大小
猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。
124 0