不要62 HDU - 2089

题意

求区间【n,m】之间有多少个数字不含4或者连续的62

解法1

由于数据范围是0~1e6,所以直接暴力判断每一位数字是否含有4或者62,然后求前缀和即可

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<math.h>
#include<queue>
#include<map>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=1e6+10;
int f[maxn];
//若X是不吉利数字,返回true
bool judge1(int x){while(x){if(x%10==4||x%100==62)return true;x/=10;}return false;
}
//若X是不吉利数字,返回true
bool judge2(int x){char p[20];sprintf(p,"%d",x);int len=strlen(p);if(p[0]=='4')return true;for(int i=1;i<len;i++){if(p[i]=='4')return true;if(p[i-1]=='6'&&p[i]=='2')return true;}return false;
}
void init(){f[1]=1;for(int i=2;i<maxn;i++){if(!judge1(i))f[i]=f[i-1]+1;elsef[i]=f[i-1];}
}
int main(){int n,m;init();while(scanf("%d%d",&n,&m)!=EOF&&n&&m){printf("%d\n",f[m]-f[n-1]);}
}

解法2

数位动态规划

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
#include<cstdio>
#include<string>
#include<math.h>
#include<algorithm>
#include<map>
#include<set>
#include<stack>
#define mod 998244353
#define INF 0x3f3f3f3f
#define eps 1e-6
using namespace std;
typedef long long LL;
const int maxn=10;
int bit[maxn];
int dp[maxn][3];//[len][x]
//0->luck
//1->luck and highest is 2
//2->unluck
//初始化DP数组,表示前i位的三种情况
void init(){dp[0][0]=1;dp[0][1]=0;for(int i=1;i<=maxn-1;i++){dp[i][0]=dp[i-1][0]*9-dp[i-1][1];dp[i][1]=dp[i-1][0];dp[i][2]=dp[i-1][2]*10+dp[i-1][1]+dp[i-1][0];}
}
int solve(int num){int len=0,rec=num,ans,flag;//get bit arraywhile(num){bit[++len]=num%10;num/=10;}bit[len+1]=0;ans=0;//the unluck numberflag=0;//if appear unluckfor(int i=len;i>=1;i--){ans+=dp[i-1][2]*bit[i];if(flag)ans+=dp[i-1][0]*bit[i];else{if(bit[i]>4)ans+=dp[i-1][0];if(bit[i]>6)ans+=dp[i-1][1];if(bit[i+1]==6&&bit[i]>2)ans+=dp[i][1];}if(bit[i]==4||(bit[i+1]==6&&bit[i]==2))flag=1;}return rec-ans;
}
int main(){init();int n,m;while(scanf("%d%d",&n,&m)!=EOF&&n&&m){printf("%d\n",solve(m+1)-solve(n));}
}

HDU - 2089 不要62 【暴力打表】【数位DP】相关推荐

  1. HDU 2089 不要62(数位DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意 求一个区间内,不出现4和连续的62的数的个数. 分析 可以暴力打表.也可以数位DP. 设: ...

  2. HDU 2089 不要62 数位DP

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目描述: 给定一个区间, 让你求这个区间中所有不带62 或 4 的数的个数 解题思路: 很明 ...

  3. hdu 2089 不要62【数位dp】

    HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...

  4. [HDU]2089不要62

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 这道题跟Bomb(http://www.cnblogs.com/sjy123/p/3247731.html ...

  5. HDU 2089 不要62

    杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).  杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障 ...

  6. 数位dp ---- 暴力 + 二进制的数位dp 2020济南 L Bit Sequence

    题目链接 题目大意 f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数f(x)=x的二进制中1的个数 给你一个数组[a1,a2,a3...,am]m∈[1,100][a_1,a_2,a_3. ...

  7. 【HDU 4352】 XHXJ's LIS (数位DP+状态压缩+LIS)

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. hdu 5435 A serious math problem(数位dp)

    题目链接:hdu 5435 A serious math problem 裸的数位dp. #include <cstdio> #include <cstring> #inclu ...

  9. 【HDU - 5456】Matches Puzzle Game(数位dp,思维)

    题干: As an exciting puzzle game for kids and girlfriends, the Matches Puzzle Game asks the player to ...

最新文章

  1. 深入剖析.NET运行机制
  2. icmp报文格式_IPV6报文格式和IPV4有什么区别?
  3. Jquery中使用SweetAlert使弹窗更漂亮
  4. ASPxGridView EditFormLayout修改 TextBox文本长度
  5. 数据结构(哈夫曼树+KMP)之 数据加密+解密
  6. 解决写文档对于图片边框的强迫症
  7. (小费马定理降幂)Sum
  8. vantUI 弹出层(轻提示)案例 - 踩坑篇
  9. IOS开发之视图和视图控制器
  10. U盘中毒文件被隐藏?U盘中毒了怎么恢复文件
  11. PyQt5教程-05-消息盒子
  12. 中文分词工具安装教程及分词和词性标注应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)
  13. 当AD(Altium Designer)画PCB时Ctrl+H快捷键无法选中连线时的解决办法
  14. 战地指挥官 服务器维护,战地指挥官有哪些常见问题以及解决方法
  15. Datename() 函数与DatePart()函数
  16. 使用BackTrack来增强电脑的安全
  17. Codeforces Round #180 (Div. 2) B. Sail 【模拟】
  18. 移动硬盘计算机无法打开硬盘,无法正常读取2T移动硬盘,让我教您一个轻松修复的窍门...
  19. python实现阿列金分类法
  20. 干巴爹、压灭跌、马杀鸡是什么意思

热门文章

  1. jquery 操作字符串、数组、对象常用方法
  2. 基于Vmware player的Windows 10 IoT core + RaspberryPi2安装部署
  3. 利用Reachability实现网络状态监听
  4. Linux内核--网络协议栈深入分析(二)--sk_buff的操作函数
  5. java为什么要初始化_JAVA中到底要怎么样初始化
  6. android 保存流媒体,Android实现使用流媒体播放远程mp3文件的方法
  7. 执行sql语句_一条SQL查询语句是如何执行的?
  8. python脚本自动运行失败_解决Python中定时任务线程无法自动退出的问题
  9. mysql开窗函数over_sql中的开窗函数over()
  10. mysql b-a全局索引_MySQL中B+树索引的使用