HDOJ题目2089 不要62(数位DP)
不要62
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25391 Accepted Submission(s): 8788
杭州交通管理局常常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来。就能够消除个别的士司机和乘客的心理障碍。更安全地服务大众。
不吉利的数字为全部含有4或62的号码。
比如:
62315 73418 88914
都属于不吉利号码。可是,61152尽管含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是。对于每次给出的一个牌照区间号。判断出交管局今次又要实际上给多少辆新的士车上牌照了。
1 100
0 0
80
pid=2065" target="_blank" style="color:rgb(26,92,200); text-decoration:none">2065
#include<stdio.h>
#include<string.h>
int dp[10][3];
void init()
{
dp[0][2]=1;
dp[0][0]=dp[0][1]=0;
for(int i=1;i<10;i++)
{
dp[i][0]=dp[i-1][0]*10+dp[i-1][1]+dp[i-1][2];
dp[i][1]=dp[i-1][2];
dp[i][2]=dp[i-1][2]*9-dp[i-1][1];
}
}
int n,m;
int solve(int n)
{
int bit[10],len=0;
int temp=n;
while(n)
{
bit[++len]=n%10;
n/=10;
}
bit[len+1]=0;
int flag=0,ans=0,i;
for(i=len;i>=1;i--)
{
ans+=dp[i-1][0]*bit[i];
if(flag)
{
ans+=dp[i-1][2]*bit[i];
}
if(!flag&&bit[i]>4)
{
ans+=dp[i-1][2];
}
if(!flag&&bit[i]>6)
{
ans+=dp[i-1][1];
}
if(!flag&&bit[i+1]==6&&bit[i]>2)
{
ans+=dp[i][1];
};
if(bit[i]==4||(bit[i]==2&&bit[i+1]==6))
flag=1;
}
if(flag)
ans++;
return temp-ans;
}
int main()
{
int i,j;
init();
while(scanf("%d%d",&n,&m)!=EOF,n||m)
{
//if()
printf("%d\n",solve(m)-solve(n-1));
}
}
HDOJ题目2089 不要62(数位DP)的更多相关文章
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- [hdu 2089] 不要62 数位dp|dfs 入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...
- HDU 2089 不要62 数位DP模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...
- HDU 2089 不要62(数位DP·记忆化搜索)
题意 中文 最基础的数位DP 这题好像也能够直接暴力来做 令dp[i][j]表示以 j 开头的 i 位数有多少个满足条件 那么非常easy有状态转移方程 dp[i][j] = sum{ dp[ ...
- 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
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hud 2089 不要62 (数位dp)
#include<stdio.h> #include<string.h> #include<math.h> #define max 10 ]; int number ...
- hdu 2089不要62 (数位dp)
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来 ...
随机推荐
- python随机数的产生
导入 random模块 >>> import random 1. random.random random.random()用于生成一个0到1的随机浮点数: 0 <= n ...
- pl/sql 函数及与存储过程的区别
函数用于返回特定的数据,当建立函数时,在函数头部必须包含return子句.而在函数体内必须包含return语句返回的数据.我们可以使用create function来建立函数. 1).接下来通过一个案 ...
- Educational Codeforces Round 19 A+B+C+E!
A. k-Factorization 题意:将n分解成k个大于1的数相乘的形式.如果无法分解输出-1. 思路:先打个素因子表,然后暴力判,注意最后跳出的条件. int len,a[N],b[N]; v ...
- 九度oj 题目1455:珍惜现在,感恩生活
题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...
- Codeforces Round #345 (Div. 2)——B. Beautiful Paintings(贪心求上升序列个数)
B. Beautiful Paintings time limit per test 1 second memory limit per test 256 megabytes input standa ...
- NOIP2017赛前模拟(4):总结
题目: 1.打牌 给定n个整数(n<=1000000),按照扑克牌对子(x,x)或者顺子(x,x+1,x+2)打出牌···问最多可以打出多少次对子或者顺子?牌的大小<=1000000 2. ...
- 居然有这种操作?各路公司面试题(作者:马克-to-win)
我喜欢考试,不考试,谁知道哪些掌握了哪些没有?? 面试什么的最有爱了(变态笑)~~~ http://www.mark-to-win.com/JavaBeginner/JavaBeginner4_web ...
- mybatis foreach Map(String,List)类型
<select id="queryList" resultType="com.performancetest.modules.ptest.entity.Stress ...
- C++基类与派生类的转换
具体表现在以下几个方面: 派生类对象可以向基类对象赋值. 可以用子类(即公用派生类)对象对其基类对象赋值.如 A a1; //定义基类A对象a1 B b1; //定义类A的公用派生类B的对 ...
- 【Hihocoder1636】Pangu and Stones(区间DP)
题意:N堆石子,每次可以合并连续的长度从L到R的若干堆石子为1堆,费用为选择的石子总个数,求将N堆合并成1堆的最小总花费,无解输出0 思路:dp[i][j][k]表示将i到j这段区间合并为k堆的最小代 ...