#include <stdio.h> #include <algorithm> using namespace std; int f[10][10]; int gidit[10]; int len; int solve(int n){ len=1; while(n>0) { int a=n%10; gidit[len++]=a; n/=10; } int ans=0; gidit[len]=0; for(int i=len-1;i>=1;i--) { for(int k=0;k<gidit[i];k++) if(k!=4&&!(k==2&&gidit[i+1]==6))ans+=f[i][k]; if(gidit[i]==4||gidit[i]==2&&gidit[i+1]==6) break; } return ans; } int main(){ int l,r; f[0][0]=1; for(int i=1;i<=10;i++) for(int k=0;k<10;k++) { if(k!=4) for(int z=0;z<10;z++) if(!(k==6&&z==2)) f[i][k]+=f[i-1][z]; } while(scanf("%d%d",&l,&r)==2&&l&&r) { printf("%d\n",solve(r+1)-solve(l)); } return 0; }
hdu2089
最新推荐文章于 2019-04-03 11:28:00 发布