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

[HDU 2089] 不要62

时间:2016-05-11 19:46:40      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

dp[dep][six]表示长度为dep的,上一位是否为6的不含62,不含4的数的个数

技术分享
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int dp[10][2],dig[10];
 4 int dfs(int dep,int six,int flag){
 5     if(!dep)return 1;
 6     if(!flag&&dp[dep][six]!=-1)return dp[dep][six];
 7     int lim=flag?dig[dep]:9;
 8     int ans=0;
 9     for(int i=0;i<=lim;i++){
10         if((six&&i==2)||i==4)continue;
11         ans+=dfs(dep-1,i==6?1:0,flag&(i==lim));
12     }
13     if(!flag)dp[dep][six]=ans;
14     return ans;
15 }
16 int solve(int x){
17     int dd=0;
18     while(x)dig[++dd]=x%10,x/=10;
19     return dfs(dd,0,1);
20 }
21 int main(){
22     memset(dp,-1,sizeof(dp));
23     int A,B;
24     while(1){
25         scanf("%d%d",&A,&B);
26         if(!A&&!B)break;
27         printf("%d\n",solve(B)-solve(A-1));
28     }
29     return 0;
30 }
View Code

 

[HDU 2089] 不要62

标签:

原文地址:http://www.cnblogs.com/Ngshily/p/5483255.html

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