hdu2089_不要62
不要62
题目大意:给你一个区间,算出该区间里不含62或4的数的个数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
/*
// 暴力就可以过了。。。
#include<stdio.h>
#define N 1000000
int sum[N];
bool fun(int x)
{
bool flag=0;
while(x)
{
int tmp=x%10;
if(tmp==4) return 0;
else if(tmp==2) flag=1;
else if(tmp==6&&flag==1) return 0;
else flag=0;
x/=10;
}
return 1;
}
void Init()
{
sum[0]=0;
for(int i=1;i<N;i++)
{
if(fun(i)==1) sum[i]=sum[i-1]+1;
else sum[i]=sum[i-1];
}
}
int main()
{
Init();
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0) break;
printf("%d\n",sum[m]-sum[n-1]);
}
return 0;
}
*/
#include<stdio.h>
int dp[][]={};
//dp[i][0] 数的长度为 i ,且不含不吉利数字 ( 不含62和4 )
//dp[i][1] 数的长度为 i ,不含不吉利数字且最高位为2
//dp[i][2] 数的长度为 i ,存在不吉利数字 void Init()
{
dp[][]=;
for(int i=;i<;i++)
{
// i位的不含不吉利数字的数的个数为 i-1位的乘以 9 (去掉4),再减去 i-1 位时吉利的且最高位为2的数的个数(6)
dp[i][]=dp[i-][]*-dp[i-][];
// i位的最高位为2的吉利数个数和i-1位的吉利数的个数相同
dp[i][]=dp[i-][];
// i位的不吉利数为 i-1位不吉利数的个数*10 + i-1位吉利数的个数(4)+ i-1位最高位为2的吉利数的个数
dp[i][]=dp[i-][]*+dp[i-][]+dp[i-][];
}
}
int solve(int x)
{
int c[],co=,n=x,s=; //s为不吉利的数的个数
while(x)
{
c[co++]=x%;
x/=;
}
c[co]=;
bool flag=;
// 从最高位往后推
for(int i=co-;i>;i--)
{
s+=c[i]*dp[i-][]; //后面造成的不吉利数
if(flag==) //前几位已经出现了不吉利现象,也就是说后面不管是啥,都是不吉利的。
{
s+=c[i]*dp[i-][];
continue;
}
if(c[i]>) //第i位为4造成的不吉利数
s+=dp[i-][];
if(c[i+]==&&c[i]>)//第i+1位为6 第i位为2造成的不吉利数
s+=dp[i][];
if(c[i]>) //第i位为6造成的不吉利数
s+=dp[i-][];
if(c[i]==||c[i+]==&&c[i]==) flag=;
}
return n-s;
}
int main()
{
Init();
int l,r;
while(scanf("%d%d",&l,&r)!=EOF)
{
if(l==&&r==) break;
printf("%d\n",solve(r+)-solve(l));
}
return ;
}
hdu2089_不要62的更多相关文章
- VS2015编译boost1.62
VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...
- P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解价格
NXP恩智浦P87LPC760/61/62/64/67/68/69/78/79芯片解密单片机破解 NXP LPC700系列单片机解密型号: P87LPC759.P87LPC760.P87LPC761. ...
- HDU2089 不要62[数位DP]
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Connection broken for id 62, my id = 70, error =
启动费zokeeper失败,报错如下:Connection broken for id 62, my id = 70, error = 原因是因为zoo.cfg中server.id不正确. serve ...
- base64/62 加解密的实现。
base64/62加解密代码下载地址: http://files.cnblogs.com/files/Kingfans/base64(62)加解密.zip base64: base62:
- /usr/include/sys/types.h:62: error: conflicting types for ‘dev_t’
/usr/include/sys/types.h:62: error: conflicting types for ‘dev_t’/usr/include/linux/types.h:13: erro ...
- [HDU2089]不要62
[HDU2089]不要62 试题描述 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就 ...
- NYOJ题目62笨小熊
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAAK1CAIAAAChInrhAAAgAElEQVR4nO3dO3LjutaG4X8Szj0Qxx
- 62个Android Studio小技巧合集
1书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除书签 ...
随机推荐
- [Java] SpringMVC工作原理之三:ViewResolver
一.ViewResolver 根据视图的名称将其解析为 View 类型的视图,如通过 ModelAndView 中的视图名称将其解析成 View,View 是用来渲染页面的,也就是将 Model 填入 ...
- 【SDOI2014】向量集
[SDOI2014]向量集 题目描述 我们分析一波: 假设我们询问\((A,B)\),\(x_i>x_j\)若 \[ A\cdot x_i+B\cdot y_i>A\cdot x_j+B\ ...
- 七、Oracle 数据库设计
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...
- 當 Alexa 遇上 ESP8266 (一)
https://www.birdandgua.net/bird/2017/12/when_alexa_meets_esp8266-1/ 去年的 AWS 的 re:Invent 上,我見識了 Alexa ...
- (0)HomeAssistant 教程
国外:https://www.home-assistant.io/components/light.mqtt/ 中国:https://www.hachina.io/docs/890.html
- Linux 内核协议栈 学习资料
终极资料 1.<Understanding Linux Network Internals> 2.<TCP/IP Architecture, Design and Implement ...
- Generative Adversarial Nets[CAAE]
本文来自<Age Progression/Regression by Conditional Adversarial Autoencoder>,时间线为2017年2月. 该文很有意思,是如 ...
- odoo11 安装python ldap
最近在研究odoo11使用ldap登录的问题,本来自己想着怎么开发,无意间在odoo11代码中看到auth_ldap的模块,原来框架已经考虑到了这个,简单研究了代码之后,理解了其大概的登录处理过程,此 ...
- 自己写一个分页PageHelper
每次写分页导航的时候都要在html页面写一堆标签和样式,太麻烦了,所以干脆自己动手封装一个自己喜欢的类直接生成. 一.PageHelper类: /// <summary> /// 分页导航 ...
- redis底层设计(四)——功能的实现
redis中我们会经常用到事务.订阅与发布.Lua脚本以及慢查询日志,接下来我们就一一对他们进行探讨学习. 4.1事务 redis通过MULTI.DISCARD.EXEC和WATCH四个命令来实现事务 ...