#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
int a[20];
int dp[20][2];
int dfs (int pos, int pre, int sta, int limit) {
if (pos == -1) return 1;
if (!limit && dp[pos][sta] != -1) return dp[pos][sta];
int up = limit ? a[pos] : 9;
int temp = 0;
for (int i = 0; i <= up; i++) {
if (pre == 6 && i == 2) continue;
if (i == 4) continue;
temp += dfs(pos - 1, i, i == 6, limit && i == a[pos]);
}
if (!limit) dp[pos][sta] = temp;
return temp;
}
int solve(int x) {
int pos = 0;
while (x) {
a[pos++] = x % 10;
x /= 10;
}
return dfs(pos - 1, -1, 0, true);
}
int main()
{
int le, ri;
while (scanf("%d %d", &le, &ri) == 2 && le + ri) {
memset(dp, -1, sizeof(dp));
printf("%d\n", solve(ri) - solve(le - 1));
}
return 0;
}
HDU 2089 不要62——数位dp
原创
©著作权归作者所有:来自51CTO博客作者软糖酱八号机的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Infineon PSoc™62开发平台介绍
Infineon PSoc62™ MCU评估板介绍
Infineon RT-Thread PSoc™62 -
PSoc™62开发板之点亮LED
使用英飞凌开发板点亮板子上的两个LED
Infineon RT-Thread PSoc™62 LED -
HDU 2089 不要62 (经典的数位dp)
不要62Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
HDU 2089 不要62 经典的数位dp #include -
HDU2089:不要62(数位DP)
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。 Input 输入的都是整数对...
#include 数位dp 数组 i++ 数值 题解 学习笔记 编程语言 -
HDU 2089 不要62 (数位DP,入门)
题意: 只要含连续的62,或者含4的车牌号码都是不吉利的,其他都是吉利
数位DP #include #define ios 暴力打表