hdu2089---不要62
tps;
1.是为了坚持,并没有搞的特别懂
2.所谓数位就是把一个数拆成一个一个进制位
//https://www.cnblogs.com/wenruo/p/4725005.html //ppt:https://wenku.baidu.com/view/9de41d51168884868662d623.html //数位的意义:https://www.cnblogs.com/real-l/p/8540124.html #include<cstdio> using namespace std; int dp[10][10]; int d[10]; void init(){ dp[0][0]=1; for(int i=1;i<=7;i++){ for(int j=0;j<=9;j++){ for(int k=0;k<=9;k++){ if(j!=4 && !(j==6 && k == 2)){ dp[i][j]+=dp[i-1][k]; } } } } } int solve(int n){ int ans=0; int len=0; while(n){ ++len; d[len]=n%10;//分离出来每位 n/=10; } d[len+1]=0;//? for(int i=len;i>=1;i--){ for(int j=0;j<d[i];j++){ if(d[i+1]!=6 || j!=2) ans+=dp[i][j]; } if(d[i] == 4 || (d[i+1] == 6 && d[i] == 2)) break; } return ans; } int main(){ int m,n; init(); while(scanf("%d%d",&m,&n)!=EOF){ if(m== 0 && n== 0) break; printf("%d\n",solve(n+1)-solve(m));//[0,R),左闭右开 } return 0; }