#include<stdio.h>

//dp[i][0]代表不存在不吉利数字

//dp[i][1]代表不存在不吉利数字但是以2开头

//dp[i][2]代表存在不吉利数字

#define N 10

int dp[N][3];

void init() {

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];//上一个长度不吉利数字个数添加个2

    dp[i][2]=dp[i-1][2]*10+dp[i-1][0]+dp[i-1][1];//上一个状态的不吉利数字前面添加任意数+上一个状态的不存在不吉利数字前面加上4+上一个状态的不存在不吉利数字但是以二开头前面加上六

}

return ;

}

int slove(int x) {

       int a[N],i,j,k,flag=0,to=x;

       k=0;

       while(x) {

        a[++k]=x%10;//储存起来

        x/=10;

       }

       a[k+1]=0;

       j=0;//保存不吉利数字的个数

       for(i=k;i>0;i--) {

        j=j+dp[i-1][2]*a[i];//a[i]个i-1不吉利数字

        if(flag)j=j+dp[i-1][0]*a[i];//如果前面存在不吉利数字那么就随意了还要再加上当前的吉利数字的个数

        else {

            if(a[i]>4)j=j+dp[i-1][0];//如果存在a[i]等于四的情况,那么就要加i-1长度的吉利数字的个数

            if(a[i]>6)j=j+dp[i-1][1];//当存在a[i]大于六的情况,还要加上长度为i-1的以二开头的吉利数字的个数

             if(a[i+1]==6&&a[i]>2)j=j+dp[i][1];//如果当前可能为2的话,要加上当以二开头时的吉利数字的个数

        }

        if((a[i+1]==6&&a[i]==2)||a[i]==4)//标记最高位已出现过不吉利数字

            flag=1;

       }

       return to-j;

}

int main() {

    int n,m;

    init();

    while(scanf("%d%d",&n,&m),n||m) {

        printf("%d\n",slove(m+1)-slove(n));

    }

return 0;

}

hdu 2089 数位dp入门题的更多相关文章

  1. hdu:2089 ( 数位dp入门+模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位dp的模板题,统计一个区间内不含62的数字个数和不含4的数字个数,直接拿数位dp的板子敲就行 ...

  2. HDU 2089 数位dp入门

    开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢) 传说院赛要取消 ? ... 这么菜不出去丢人也好吧~ #include<stdi ...

  3. 不要62(HDU 2089数位dp入门)

    题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 分析:dp[i][f]数字表示不含 4 和 62的前提下,剩余长度为 len ,首位是否为 6 的个数. #include < ...

  4. HDU 2089 不要62【数位DP入门题】

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. HDU 2089 - 不要62 - [数位DP][入门题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  6. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  7. 数位DP入门题

    站点一览: hdu 2089"不要62" hdu 4734"F(X)" poj 3252"Round Numbers" hdu 3709&q ...

  8. hdu 2089 数位dp

    链接:https://vjudge.net/problem/23625/origin 中文,题目不用说了. 其实这题的数据很小,所以直接暴力也可以过,但是还是要学会数位dp,因为并不是每一题的数据都会 ...

  9. 数位DP入门题——[hdu2089]不要62

    数位DP是我的噩梦. 现在初三了,却没AC过数位DP的题目. 感觉数位DP都是毒瘤-- 题目 hdu不用登录也可以进去,所以就不把题目copy到这里来了. 题目大意 求区间[n,m][n,m][n,m ...

随机推荐

  1. springboot的登录拦截机制

    转自:https://blog.csdn.net/qq_26555463/article/details/78296103 如果是一个后台的管理项目的,有些东西是不能直接就可以访问的,必须要登录才可以 ...

  2. 第13课 SmartGit程序操作介绍

    http://www.syntevo.com/

  3. linux下安装rabbitmq以及在spring中进行集成

    ### 一.安装erlang 1. yum install ncurses-devel 2. ./configure --prefix=/usr/local/erlang20 --without-ja ...

  4. B - Sleuth

    Problem description Vasya plays the sleuth with his friends. The rules of the game are as follows: t ...

  5. C - Lucky Numbers (easy)

    Problem description Petya loves lucky numbers. Everybody knows that positive integers are lucky if t ...

  6. Oracle快速收集AWR的方案

    记一种方便的awr收集方法,该脚本可以按小时收集目标时段的awr 素材:awr_generate.sql(具体脚本内容请见本文末尾) (1)将awr_generate.sql置于数据库服务器本地路径, ...

  7. fontSpider字蛛,好用的字体压缩工具教程

    一直觉得很多字体特别好看,但是那些好看的字体只能做在图片上不能用CSS样式去实现,作为一个会设计的前端,真心觉得很烦恼,有时候那些文字需要更换,修改起来非常麻烦,要到处去找源文件,找不到源文件还要尽力 ...

  8. dubbo之上下文信息

    上下文信息 上下文中存放的是当前调用过程中所需的环境信息.所有配置信息都将转换为 URL 的参数,参见 schema 配置参考手册 中的对应URL参数一列. RpcContext 是一个 Thread ...

  9. Windows下使用Caffe-Resnet

    参考文章: 编译历程参考:CNN:Windows下编译使用Caffe和Caffe2 caffe的VS版本源代码直接保留了sample里面的shell命令,当然这些shell命令在Windows平台下是 ...

  10. AI:模式识别的数学表示(集合—函数观点)

    前言: 模式识别的定义,参考:模式识别两种方法:知识和数据 .百科定义:模式识别(英语:Pattern Recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读.我们把环境与客 ...