码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2089 不要62

时间:2016-08-06 12:50:57      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

题意:求区间内不包含4和连续62的数的个数

分析:从高位向低位枚举,4的话,直接不枚举就行了,62用一个标志来记录上一个数是否是6,还要加一个表示上面是否达到上限,没有就可以枚举到9,否则枚举到liimt[len]

入门题,这个模型以后会经常用到

技术分享
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int dp[8][2],d[8];
 5 
 6 int dfs(int len,int state,int f){
 7     if(!len)return 1;
 8     int& tmp=dp[len][state];
 9     if(!f&&tmp!=-1);
10     int maxn=!f?9:d[len-1];
11     int ret=0;
12     for(int i=0;i<=maxn;i++){
13         if(i==4||i==2&&state)continue;
14         ret+=dfs(len-1,i==6,f&&i==maxn);
15     }
16     if(!f)tmp=ret;
17     return ret;
18 }
19 
20 int solve(int x){
21     memset(dp,-1,sizeof(dp));
22     int len=0;
23     while(x>0){
24         d[len++]=x%10;
25         x/=10;
26     }
27     return dfs(len,0,1);
28 }
29 
30 int main(){
31     int x,y;
32     while(cin>>x>>y&&x+y)
33         cout<<solve(y)-solve(x-1)<<endl;
34 
35 
36     return 0;
37 }
View Code

 

hdu 2089 不要62

标签:

原文地址:http://www.cnblogs.com/jihe/p/5743539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!