杭州人称那些傻乎乎粘嗒嗒的人为 62(音:laoer)。
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有 44 或 6262 的号码。例如:62315,73418,8891462315,73418,88914 都属于不吉利号码。但是,6115261152 虽然含有 66 和 22,但不是 6262 连号,所以不属于不吉利数字之列。
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今后又要实际上给多少辆新的士车上牌照了。
#include<iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
const int N=10;
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+c-'0',c=getchar();
return x*f;
}
inline int min(int a,int b){return (a<b ? a:b);}
inline int max(int a,int b){return (a>b ? a:b);}
inline int gcd(int a, int b){return (b==0 ? a : gcd(b,a%b));}
int f[N][N],a[N];
inline void init(){
for(int i=0;i<=9;i++) f[1][i]=bool(i-4);
for(int i=2;i<N;i++){
for(int j=0;j<=9;j++){
if(j==4) continue;
for(int k=0;k<=9;k++){
if(k==4 || (j==6)&&(k==2)) continue;
f[i][j]+=f[i-1][k];
}
}
}
}
inline int dp(int n){
if(n==0) return 1;
int cnt=0,res=0,last=0;
while(n){
a[++cnt]=n%10,n/=10;
}
for(int i=cnt;i>0;i--){
for(int j=0;j<a[i];j++){
if(j==4) continue;
if(last==6 && j==2) continue;
res+=f[i][j];
}
last=a[i];
if(a[i]==4) break;
if(i==1) res++;
}
return res;
}
signed main(){
int m,n;
init();
while(1){
cin>>m>>n;
if(m==n && m==0) break;
cout<<dp(n)-dp(m-1)<<'\n';
}
return 0;
}
WA29求调