hdu 2089 数位dp入门题
#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入门题的更多相关文章
- hdu:2089 ( 数位dp入门+模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位dp的模板题,统计一个区间内不含62的数字个数和不含4的数字个数,直接拿数位dp的板子敲就行 ...
- HDU 2089 数位dp入门
开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢) 传说院赛要取消 ? ... 这么菜不出去丢人也好吧~ #include<stdi ...
- 不要62(HDU 2089数位dp入门)
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 分析:dp[i][f]数字表示不含 4 和 62的前提下,剩余长度为 len ,首位是否为 6 的个数. #include < ...
- HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 数位DP入门题
站点一览: hdu 2089"不要62" hdu 4734"F(X)" poj 3252"Round Numbers" hdu 3709&q ...
- hdu 2089 数位dp
链接:https://vjudge.net/problem/23625/origin 中文,题目不用说了. 其实这题的数据很小,所以直接暴力也可以过,但是还是要学会数位dp,因为并不是每一题的数据都会 ...
- 数位DP入门题——[hdu2089]不要62
数位DP是我的噩梦. 现在初三了,却没AC过数位DP的题目. 感觉数位DP都是毒瘤-- 题目 hdu不用登录也可以进去,所以就不把题目copy到这里来了. 题目大意 求区间[n,m][n,m][n,m ...
随机推荐
- luogu1026 统计单词个数
题目大意 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1< k< =40),且每份中包含 ...
- js的内建arguments数组
调用函数时,只需在函数名后加一对用于传递参数的括号即可.var result = sum(1,2) 如果调用参数(a,b)的时候没有给值,则值默认为undefined.即使传递参数过多,多余的部分也会 ...
- 84. ExtJS下页面显示中文乱码问题
转自:https://blog.csdn.net/wenminhao/article/details/51198981 最近在学校extjs是,使用js脚本显示中文在html页面中时,中午出现了乱码的 ...
- 1046: [HAOI2007]上升序列(dp)
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4999 Solved: 1738[Submit][Stat ...
- [Apple开发者帐户帮助]二、管理你的团队(7)管理服务器帐户
如果在配置机器人以在多个设备上运行应用程序时向团队添加服务器,允许Xcode Server为您管理签名,或者配置机器人以创建iOS App文件,则服务器可以访问您的资产并显示在您的开发人员帐户 您可以 ...
- go的接口
一.接口定义 接口类型 在讲基础数据类型时,我们曾提了一下 interface 数据类型,这个数据类型就是接口类型 什么是接口 Go 语言不是"传统"的面向对象的编程语言:它里面没 ...
- 2015 多校赛 第三场 1002 (hdu 5317)
Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more i ...
- ACM_一道耗时间的水题
一道耗时间的水题 Time Limit: 2000/1000ms (Java/Others) Problem Description: Do you know how to read the phon ...
- doctype声明 过渡transitional 严格strict 框架frameset
DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本. 其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义 ...
- T-SQL查询高级--理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤
写在前面:这是第一篇T-SQL查询高级系列文章.但是T-SQL查询进阶系列还远远没有写完.这个主题放到高级我想是因为这个主题需要一些进阶的知识作为基础..如果文章中有错误的地方请不吝指正.本篇文章 ...