Day9 - I - 不要62 HDU - 2089
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有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 思路:数位DP模板,记忆化搜索+数位限制limit
const int maxm = ;
int dp[maxm][], n, m, a[maxm];
int dfs(int pos, int state, int pre, bool limit) {
    if(pos == -) return ;
    if(!limit && dp[pos][state] != -) return dp[pos][state];
    int up = limit?a[pos]:;
    int tmp = ;
    for(int i = ; i <= up; ++i) {
        if(pre ==  && i == ) continue;
        if(i == ) continue;
        tmp += dfs(pos-, i == , i, limit && i == a[pos]);
    }
    if(!limit) dp[pos][state] = tmp;
    return tmp;
}
int solve(int n, int m) {
    int pos = ;
    while(n) {
        a[pos++] = n % ;
        n /= ;
    }
    int t1 = dfs(pos-, , -, true);
    pos = ;
    while(m) {
        a[pos++] = m % ;
        m /= ;
    }
    t1 = dfs(pos-, , -, true) - t1;
    return t1;
}
void run_case(int n, int m) {
    memset(dp, -, sizeof(dp));
    cout << solve(n-, m) << "\n";
}
int main() {
    ios::sync_with_stdio(false), cin.tie();
    while(cin >> n >> m && n+m)
        run_case(n, m);
    return ;
}
Day9 - I - 不要62 HDU - 2089的更多相关文章
- 不要62 hdu 2089 dfs记忆化搜索
		
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给你两个数作为一个闭区间的端点,求出该区间中不包含数字4和62的数的个数 思路: 数位dp中 ...
 - A - 不要62 HDU - 2089
		
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...
 - 水题 不要62 HDU 2089
		
先预处理出所有的数是不是可能拿来用,我的想法是记录1-i这个区间内可用的数为s[i]. 输入a,b.答案就为s[b] - s[a-1]. 贴代码: #include<cstdio> #de ...
 - 数位DP入门(A - 不要62 HDU - 2089 &&B - Bomb HDU - 3555 )
		
题目链接:https://cn.vjudge.net/contest/278036#problem/A 具体思路:对于给定的数,我们按照位数进行运算,枚举每一位上可能的数,在枚举的时候需要注意几个条件 ...
 - Hdu 2089 不要62 (数位dp入门题目)
		
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
 - hdu 2089 不要62【数位dp】
		
HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...
 - HDU 2089   简单数位dp
		
1.HDU 2089 不要62 简单数位dp 2.总结:看了题解才敲出来的,还是好弱.. #include<iostream> #include<cstring> #i ...
 - 递推、数位DP解析(以HDU 2089 和 HDU 3555 为例)
		
HDU 2089 不要62 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2089 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人 ...
 - 2019年9月训练(壹)数位DP (HDU 2089)
		
开学之后完全没时间写博客.... HDU 2089 不要62(vjudge) 数位DP 思路: 题目给出区间[n,m] ,找出不含4或62的数的个数 用一个简单的差分:先求0~m+1的个数,再减去0~ ...
 
随机推荐
- Sqlmap 工具用法详解
			
Sqlmap 工具用法详解 sqlmap是一款自动化的sql注入工具. 1.主要功能:扫描.发现.利用给定的url的sql注入漏 ...
 - js中数组的循环与遍历forEach,map
			
对于前端的循环遍历我们知道有 针对js数组的forEach().map().filter().reduce()方法 针对js对象的for/in语句(for/in也能遍历数组,但不推荐) 针对jq数组/ ...
 - Euler Sums系列(三)
			
\[\Large\sum_{n=1}^{\infty}\frac{\left(H_{n}^{(2)}\right)^{2}}{n^{2}}=\frac{19}{24}\zeta(6)+\zeta^{2 ...
 - PostgreSQL数据库-分页sql--offset
			
select * from users order by score desc limit 3;--取成绩的前3名=====select * from users order by score des ...
 - case语句!
			
1.case 语句概述(1)case 语句的作用使用 case 语句改写 if 多分支可以使脚本结构更加清晰.层次分明.针对变量的不同取值,执行不同的命令序列.2.case 语句的结构:case 变量 ...
 - centos7使用docker制作tomcat本地镜像
			
1.安装Docker 安装docker前请确认当前linux的内核版必须是3.10及以上 命令: uname -r 1).yum install -y yum-utils device-mapper ...
 - Git fork后如何同步源仓库更新
			
1. 设置源仓库的远程地址 >> git remote add [新地址名称] [源仓库远程地址] >> git remote add upstream https://git ...
 - 知乎模拟登录,支持验证码和保存 Cookies
			
import requests import time import re import base64 import hmac import hashlib import json import ma ...
 - pymongo 用户密码连接
			
# db mongodbdb_mongo_attr = { 'host': '*', 'port': 27, 'database':'tease', 'username':'*v', 'passwor ...
 - VM安装linux操作系统详细教程
			
1.首先我们新建一个虚拟机,先不安装操作系统,稍后再对其安装Linux系统. 新建虚拟机步骤如下: 打开VMware软件,菜单栏点击“文件(F)”–>选择“新建虚拟机(N)”,如下图1,(或者直 ...