不要62

#include <bits/stdc++.h>
using namespace std;
using ll = long long ;
const int N = 35;
int dp[N][10];
void init()
{
    for(int i=0;i<=9;i++)
        if(i!=4) dp[1][i]=1;
    for(int i=1;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;
                dp[i][j]+=dp[i-1][k];
            }
        }
}
int dpp(int n)
{
    if(!n)return 1;
    vector<int>num;
    while(n)num.push_back(n%10),n/=10;
    int last=0,res=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+=dp[i+1][j];
        }
        if(x==4||x==2&&last==6)break;
        last=x;
        if(i==0)res++;
    }
    return res;
}
int main()
{
    init();
    int l,r;
    while(cin>>l>>r,l||r){
        cout<<dpp(r)-dpp(l-1)<<endl;
    }
}

  

posted @ 2021-06-23 10:35  Acception  阅读(24)  评论(0)    收藏  举报