HDU2089——不要62(数位dp入门)_say_c_box的博客-程序员秘密

技术标签: 算法  HDU  动态规划  

不要62

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 35612    Accepted Submission(s): 12972


Problem Description
杭州人称那些傻乎乎粘嗒嗒的人为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
 

Author
qianneng
 

Source
 

和bomb的写法基本是一样的。

mark一下几个需要注意的地方。一个是分类讨论,低位该位高位影响都要考虑到。一个不要忘记算该数本身。细心细心细心!


#include <cmath>
#include <cstring>
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
#include <string>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <ctime>
#include <cstdlib>
#include <cctype>
#include <iostream>
#include <fstream>
using namespace std;
#define MAXN 400010
#define LEN 200010
#define INF 1e9+7
#define MODE 1000000
#define pi acos(-1)
#define g 9.8
typedef long long ll;


long long dp[10][3];

/*
 * dp[i][0],表示不含有不吉利数字
 * dp[i][1],表示不含有不吉利数字,且最高位为2
 * dp[i][2],表示含有不吉利数字
 */

void init()
{
    dp[0][0]=1;
    dp[0][1]=0,dp[0][2]=0;
    for(int i=1;i<10;i++){
        dp[i][0]=9*dp[i-1][0]-dp[i-1][1];
        dp[i][1]=dp[i-1][0];
        dp[i][2]=dp[i-1][0]+dp[i-1][1]+10*dp[i-1][2];
    }
}

long long solve(int n){
    long long ans=0;
    int bit[10];
    int k=n;
    int num=1;
    while(n){
        bit[num++]=n%10;
        n/=10;
    }
    bit[num]=0;
    bool flag=false;
    for(int i=num-1;i>0;i--){
        ans+=dp[i-1][2]*bit[i];
        if(flag)
            ans+=dp[i-1][0]*bit[i];
        else{
            if(bit[i]>4){
                ans+=dp[i-1][0];
            }
            if(bit[i+1]==6&&bit[i]>2){
                ans+=dp[i][1];
            }
            if(bit[i]>6){
                ans+=dp[i-1][1];
            }
            if(bit[i]==4||(bit[i]==2&&bit[i+1]==6)){
                flag=true;
            }
        }
    }
    if(flag)
        ans++;
    return k-ans;
}

int main()
{
    int n,m;
    init();
    while(scanf("%d%d",&m,&n)!=EOF){
        if(n==0&&m==0){
            return 0;
        }
        printf("%lld\n",solve(n)-solve(m-1));
    }
}



 





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/say_c_box/article/details/52728818

智能推荐

Windows平台下LispBox环境搭建_wuxianglonghaohao的博客-程序员秘密

转自http://home.cnblogs.com/u/sunt2012/Lisp in a Box软件包可以让新Lisp程序员在一流的Lisp开发环境上近乎无痛止步,Lisp in a Box使用Emacs作为其编辑器。本篇主要说明LispBox在Windos平台的搭建的步骤:1.下载Lisp in a Box包,地址http://common-lisp.net/pr

何为宇宙之一粟_宇宙之一粟的博客-程序员秘密

取名宇宙之一粟?只听过沧海一粟,宇宙无穷。何来宇宙之一粟,说来有趣,有一次背诗之时,发现背了这句,然后不太确定,于是上网查这个词,竟然是我弄混了。那就将错就错,我们来细细探究。## 觉宇宙之无穷《淮南子原道训》注:“四方上下曰宇,古往今来曰宙,以喻天地”。宇宙,一般当作天地万物的总称。王勃在《滕王阁序》中说道:“天高地迥,觉宇宙之无穷;兴尽悲来,识盈虚之有数。”苍天高远,大地寥廓,令人感...

springboot 学习之路 4(日志输出)_weixin_30502965的博客-程序员秘密

目录:【持续更新。。。。。】    spring 部分常用注解  spring boot 学习之路1(简单入门)  spring boot 学习之路2(注解介绍)  spring boot 学习之路3( 集成mybatis )  spring boot 学习之路4(日志输出)  spring boot 学习之路5(打成war包部署tomcat)  spring boot 学习之路6(定时任务)...

【日语】动物名称日语单词集合_alexlau2016的博客-程序员秘密

动物 dòngwù どうぶつ【动物】 doubutsu animals サッド人 rén にんげん【人间】 ningen human being/person コン马 m?? うま【马】 uma horse マー斑马 b??nm?? しまうま【缟马】 shimauma zebra ラー驴 lú ろば【驴马】 roba ass/donkey 骡 luó らば【骡马】 raba ...

注册表有什么用???_注册表项启动后会怎么样_来自星星的李小贤的博客-程序员秘密

重点内容注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Window

手把手教你内网环境搭建百度地图_百度地图jsqpi在内网使用_gonghaiyu的博客-程序员秘密

百度地图内网访问方案现在有一个项目,需要实现内网访问百度地图。上网查阅资料发现有以下两种思路:1、离线百度地图api以及一些资源(控件、logo)2、离线百度地图api以及一些资源(控件、logo、瓦片图)区别就在于需不需要把瓦片图下载到本地。方案2的难点在于:a.下载瓦片图,需要特定的下载程序,一般都是付费的,否则不全或有水印;b.命名瓦片图,在1.3版本中,需要依靠xyz的值来确定瓦片图的路径,有些博客有涉及。综上所述,采用方案1比较简单,它的整体思路是:只把api对应的js文件和一些必需的资

随便推点

自绘控件 CSatic无法响应OnDrawItem_weixin_34216107的博客-程序员秘密

不选择在 PreSubclassWindow 中作“初始化”工作是因为用户可能在使用中改变属性,必须在一个经常进入的地方检查是否要重新“初始化”。把这项工作放到和绘制有关的消息响应函数里则父窗口一个 RedrawWindow() 就可以引起重新“初始化”。 一般步骤:1.派生控件子类2.添加 PreTranslateMessage3.进行常规操作记下消息类型4.在子类里处理消息 MFC的 C...

旋转字符串算法由浅入深_judyge的博客-程序员秘密

昨天在写一个旋转字符串的函数时,写着写着发现有好多种方法,最简单的莫过于替换然后覆盖再插入。不要小看这种小的算法,其实这其中蕴含着很多容易忽略的编程的细节。下面就跟随着我的文字来由浅入深进行巩固和再学习。总结下来此问题的算法大约有五个,这是在分得很细的情况下,前面的两个是自己想的,后面的三个参考了一个叫July的大神的思路。其实这些算法总体的思路大同小异,但这些细节问题也让我的思维有了很大的开阔。

Metropolis Hasting算法_weixin_30808693的博客-程序员秘密

Metropolis Hasting Algorithm:MH算法也是一种基于模拟的MCMC技术,一个非常重要的应用是从给定的概率分布中抽样。主要原理是构造了一个精妙的Markov链,使得该链的稳态 是你给定的概率密度。它的优点,不用多说,自然是能够对付数学形式复杂的概率密度。有人说,单维的MH算法配上Gibbs Sampler差点儿是“无敌”了。今天试验的过程中发现,M...

C++性能之战(7)--一些凑不成一篇文章的C++优化技巧_c++ sin函数耗时_白夜行的狼的博客-程序员秘密

0. 写在最前面本文持续更新地址:https://haoqchen.site/2020/07/11/some-cpp-optimize/有一些比较小的优化技巧,凑不成一篇文章,在这里做个记录。如果觉得写得还不错,可以找我其他文章来看看哦~~~可以的话帮我github点个赞呗。你的Star是作者坚持下去的最大动力哦~~~1. Strength reduction译作强度折减?这是编译器的优化技术,现在一般的编译器都已经能够自动识别,不需要我们自己实现。但有些比较老,或者功能不强的编译器还是最好自己

java部署工具下载_Walle部署工具-Walle(开源部署工具)下载 v2.0.1官方版--pc6下载站..._简单心理的博客-程序员秘密

Walle开源部署工具是一款免费开源的上线部署平台,Walle开源部署工具支持各种web代码发布,php、java等代码的发布、回滚可以通过web来一键完成。walle更人性化,高颜值,支持git、多用户、多语言等。。相关软件软件大小版本说明下载地址Walle(开源部署工具)是一款免费开源的上线部署平台,Walle(开源部署工具)支持各种web代码发布,php、java等代码的发布、回滚可以通过w...

NOI openjudge 1.3编程基础之算术表达式与顺序执行01:A+B问题_hello,c++的博客-程序员秘密

01:A+B问题​​​​​​​​​​​​总时间限制:1000ms内存限制:65536kB描述在大部分的在线题库中,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法。A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。输入一行,包含两个整数A,B,中间用单个空格隔开。A和B均在整型范围内。输出一个整数,即A+B的值。保证结果在整型范围内。样例输入1 2样例输出...

推荐文章

热门文章

相关标签