首页 > 其他 > 详细

1589:不要 62

时间:2019-10-08 20:53:04      阅读:128      评论:0      收藏:0      [点我收藏+]

/*
reference:

Date:
2019.10.08
sol:

*/

include<bits/stdc++.h>

using namespace std;

define int long long

template inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c==‘-‘;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;}

define rep(i,a,b) for(int i=(a);i<=(b);++i)

define dwn(i,a,b) for(int i=(a);i>=(b);--i)

define mem(a,b) memset(a,b,sizeof(a))

define ee(i,u) for(int i=head[u];i;i=e[i].next)

int l,r,len;
int dp[10][10];
int bit[10];

inline int dfs(int pos,int pre,int limit){
if(pos>len)return 1;
if(dp[pos][pre]!=-1 && !limit)return dp[pos][pre];
int up=limit?bit[len-pos+1]:9;
int res=0;
rep(i,0,up){
if(i==4)continue;
if(pre==6 && i==2)continue;
res+=dfs(pos+1,i,i==up && limit);
}
if(!limit)dp[pos][pre]=res;
return res;
}

inline int work(int x){
mem(dp,-1);
len=0;
while(x){
bit[++len]=x%10;
x/=10;
}
return dfs(1,0,1);
}

undef int

int main(){

define int long long

#ifdef WIN32 
freopen("test.txt","r",stdin);
#endif
while(1){
    rd(l),rd(r);
    if(l==0 && r==0)break;
    printf("%lld\n",work(r)-work(l-1));
}
return 0;

}

1589:不要 62

原文:https://www.cnblogs.com/sjsjsj-minus-Si/p/11637669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!