【数位DP】 HDU 2089
来源:互联网 发布:python系统变量 name 编辑:程序博客网 时间:2024/04/19 01:02
点击打开链接
区间内不出现4 或者62 的个数
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <iostream>#include <algorithm>#include <sstream>#include <cmath>using namespace std;#include <queue>#include <stack>#include <vector>#include <deque>#include <set>#include <map>#define cler(arr, val) memset(arr, val, sizeof(arr))#define FOR(i,a,b) for(int i=a;i<=b;i++)#define IN freopen ("in.txt" , "r" , stdin);#define OUT freopen ("out.txt" , "w" , stdout);typedef long long LL;const int MAXN = 1011;const int MAXM = 610;const int INF = 0x3f3f3f3f;const LL mod = 2147483647;const double eps= 1e-8;const double pi=acos(-1.0);#define lson l,m, rt<<1#define rson m+1,r,rt<<1|1int len,dig[10];int f[10][10][5];int dfs(int pos,int pre,int fg,int limit)//pre上一位的值,fg == 1满足条件,limit ==1 到达临界{ if (pos<0) return fg==0; if (!limit&&f[pos][pre][fg]!=-1) return f[pos][pre][fg]; int res=0; int last=limit?dig[pos]:9; for (int i=0;i<=last;i++) { res+=dfs(pos-1,i,fg||((pre==6)&&(i==2))||(i==4),limit&&(i==last)); } if (!limit) f[pos][pre][fg]=res; return res;}int solve(int n){ len=0; cler(f,-1); while(n) { dig[len++]=n%10; n/=10; } return dfs(len-1,0,0,1);}int main(){ int x,y; while(scanf("%d%d",&x,&y),x||y) { printf("%d\n",solve(y)-solve(x-1)); } return 0;}
0 0
- HDU 2089 数位DP
- Hdu 2089 数位dp
- HDU 2089 数位DP
- 数位DP hdu-2089
- HDU 2089 数位DP
- HDU 2089【数位DP】
- 【数位DP】 HDU 2089
- 数位DP hdu 2089
- hdu 2089 数位DP
- hdu 2089 数位dp
- hdu 2089 数位dp
- hdu 2089 数位dp
- HDU 2089 数位DP
- HDU 2089 数位DP
- hdu 2089 数位DP
- HDU-2089-数位dp
- HDU 2089 数位DP
- hdu 2089 数位dp
- ubuntu 常用命令笔记
- Jackson使用总结
- [leetcode]Generate Parentheses
- 黑马程序员-if语句
- π=4*atan(1.0);
- 【数位DP】 HDU 2089
- python3的玩家们 pymysql把mysqldb库取代了
- Linux下的fdisk用法
- DVWA
- 为什么首富不是房地产就是互联网?读崔恺《我的互联网地产论》有感
- CUDA中Bank conflict冲突
- Effective C++ Item04 Note
- vs2010中c#中类库dll制作和引用方法
- 正则表达式学习(一)