zoukankan      html  css  js  c++  java
  • 数位DP

    不要62
    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 
    杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 
    不吉利的数字为所有含有4或62的号码。例如: 
    62315 73418 88914 
    都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 
    你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。 

    Input

    输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。 
    Output

    对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。 
    Sample Input

    1 100
    0 0

    Sample Output

    80

    给你n到m的数,如果出现4还有连续62就是不吉利的号,要进行跳过。这个题暴力完全是可以过的,但他是数位DP的模板题,我可以直接统计每个区间的值,使用dp数组去0,用dp[i][j] 表示滴i个数时以j结尾所应该统计的个数

    #include <stdio.h>
    int dp[10][3];
    void inti()
    {
        int i;
        dp[0][0]=1;
        for(i=1;i<10;i++)
        {
            dp[i][0]=dp[i-1][0]*9-dp[i-1][1];
            dp[i][1]=dp[i-1][0];
            dp[i][2]=dp[i-1][2]*10+dp[i-1][0]+dp[i-1][1];
        }
    }
    int solve(int x)
    {
        int i,k,f,ans,t=x;
        int a[20]={0};
        k=0;
        while(x)
        {
            a[++k]=x%10;
            x/=10;
        }
        ans=f=0;
        for(i=k;i>0;i--)
        {
            ans+=a[i]*dp[i-1][2];
            if(f)
                ans+=a[i]*dp[i-1][0];
            else
            {
                if(a[i]>4)
                    ans+=dp[i-1][0];
                if(a[i]>6)
                    ans+=dp[i-1][1];
                if(a[i+1]==6&&a[i]>2)
                    ans+=dp[i][1];
            }
            if(a[i]==4||(a[i+1]==6&&a[i]==2))
                f=1;
        }
        return t-ans;
    }
    int main()
    {
        int a,b;
        inti();
        while(scanf("%d%d",&a,&b),a||b)
        {
            printf("%d
    ",solve(b+1)-solve(a));
        }
        return 0;
    }
  • 相关阅读:
    oracle常规操作
    shell 的算数运算
    sed 命令小结
    swing
    索引失效
    poj--1258--Agri-Net(最小生成树)
    CodeForces--626C--Block Towers (二分)
    Codeforces--629A--Far Relative’s Birthday Cake(暴力模拟)
    Codeforces--629B--Far Relative’s Problem(模拟)
    hdoj--5104--Primes Problem(素数打表)
  • 原文地址:https://www.cnblogs.com/BobHuang/p/6924796.html
Copyright © 2011-2022 走看看