#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int dp[10][3];
int n, m;
void init()
{
memset(dp, 0, sizeof(dp));
dp[0][0] = 1;
for(int i = 1; i <= 6; i++)
{
dp[i][0] = dp[i - 1][0]*9 - dp[i -1][1];
dp[i][1] = dp[i-1][0];
dp[i][2] = dp[i-1][2]*10 + dp[i-1][0] + dp[i-1][1];
}
}
int solve(int n)
{
int temp = n;
int a[10];
int ans = 0;
int len = 0;
int flag = 0;
while(n)
{
a[++len] = n%10;
n /= 10;
}
a[len+1] = 0;
for(int i = len; i >= 1; i--)
{
ans += dp[i-1][2]*a[i];
if(flag)
ans += dp[i-1][0]*a[i];
if(!flag && a[i] > 4)
ans += dp[i-1][0];
if(!flag && a[i + 1] == 6 && a[i] > 2)
ans += dp[i][1];
if(!flag && a[i] > 6)
ans += dp[i-1][1];
if(a[i] == 4 || (a[i+1] == 6 && a[i] == 2))
flag = 1;
}
return temp - ans;
}
int main()
{
init();
while(scanf("%d%d", &n, &m) != EOF)
{
if(n == 0 && m == 0)
break;
printf("%d\n", solve(m+1) - solve(n));
}
return 0;
}
hdu 2089 不要62
最新推荐文章于 2022-03-31 09:27:34 发布