不要62(数位dp)

简介: 不要62(数位dp)
#include<bits/stdc++.h>
using namespace std;
const int N=11,M=100;
int f[N][N]; //第i位 取j时,满足车牌的种类数 max
int n,m;
void init()
{
    for(int i=0;i<=9;i++) if(i!=4)f[1][i]=1;
    for(int i=2;i<=N;i++)
    {
        for(int j=0;j<=9;j++)
        {
            if(j==4) continue;
            for(int k=0;k<=9;k++)
            {
                if(k==4||j==6&&k==2) continue;
                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 res=0;
    int last=0;
    for(int i=num.size()-1;i>=0;i--)
    {
        int x=num[i];
        for(int j=0;j<x;j++)
        {
            if(j==4||last==6&&j==2) continue;
            res+=f[i+1][j];
        }
        if(x==4||last==6&&x==2) break;
        last=x;
        if(!i) res++;
    }
    return res;
} 
int main()
{
    init();
    while(cin>>n>>m,n||m)
    {
       cout<<cal(m)-cal(n-1)<<endl;
    }
    return 0;
}
目录
相关文章
|
6月前
|
存储
【题型总结】数位dp(一)
【题型总结】数位dp(一)
78 0
|
1月前
|
存储
72. 编辑距离、198.打家劫舍、213_打家劫舍2(12021-11-06)
72. 编辑距离、198.打家劫舍、213_打家劫舍2(12021-11-06)
22 0
|
6月前
数位dp(计数问题)
数位dp(计数问题)
|
6月前
C. Unlucky Numbers(数位dp)
C. Unlucky Numbers(数位dp)
|
6月前
|
存储 网络架构
【题型总结】数位dp(二)
【题型总结】数位dp(二)
73 0
|
机器学习/深度学习
卡特兰数
卡特兰数
81 0
|
算法
【学会动态规划】第 N 个泰波那契数(1)
【学会动态规划】第 N 个泰波那契数(1)
112 1
|
人工智能
洛谷P1115-最大子段和(DP-最大子段和)
洛谷P1115-最大子段和(DP-最大子段和)
洛谷P1115-最大子段和(DP-最大子段和)