#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; inline int read() { char c=getchar();int num=0; for(;!isdigit(c);c=getchar()); for(;isdigit(c);c=getchar()) num=num*10+c-'0'; return num; } const int N=1e6+5; int n,m; int a[20],dgt; int f[20][2; int dfs(int dep,int pre,int sta,bool lim) { if(!dep) return 1; if(!lim&&f[dep][sta!=-1) return f[dep][sta]; int up=lim?a[dep]:9; int ans=0; for(int i=0;i<=up;++i) { if(i==4) continue; if(pre==6&&i==2) continue; ans+=dfs(dep-1,i,i==6,lim&&i==a[dep]); } if(!lim) f[dep][sta]=ans; return ans; } int solve(int x) { for(dgt=0;x;a[++dgt]=x%10,x/=10); return dfs(dgt,0,0,1); } int main() { while(1) { memset(f,-1,sizeof(f)); n=read(),m=read(); if(!n&&!m) break; cout<<solve(m)-solve(n-1)<<'\n'; } return 0; }
相关文章: