思路:
暂时忘了。
AC代码:
#include <iostream>
#include <string.h>
typedef long long int lli;
using namespace std;
int dp[10][10];
int a[10];
int f(int n){
int i = 0;
while(n){
a[++i] = n % 10;
n /= 10;
}
return i;
}
int solve(int n){
memset(a,0,sizeof(a));
int len = f(n);
int ans = 0;
for(int i = len ;i >= 1;i--){
for(int j = 0;j < a[i] ;j++){
if(!(a[i+1] == 6 && j == 2))
ans += dp[i][j];
}
if(a[i] == 4 || (a[i+1] == 6 && a[i] == 2)){
break;
}
}
return ans;
}
int main()
{
dp[0][0] = 1;
for(int i = 1;i <= 7;i++){
for(int j = 0; j<10;j++){
for(int k = 0;k <10;k++)
if(j != 4 && !(j==6 && k ==2))
dp[i][j] += dp[i-1][k];
}
}
int l,r;
while(cin>>l>>r,r){
cout<<solve(r+1) - solve(l)<<endl;
}
return 0;
}