这题大部分方法采用数位DP可做,但是采用bool类型标记更简便
<span style="font-size:18px;">#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define N 1000005
bool a[N];
bool f(int num)
{
int len, i;
char s[10];
sprintf(s, "%d", num);
len = strlen(s);
for (i = 0; i < len; i++)
{
if (s[i] == '4')
{
return false;
}
if (s[i] == '6' && s[i + 1] == '2')
{
return false;
}
}
return true;
}
int main ()
{
//freopen("E:\input.txt", "r", stdin);
int n, m, i;
for (i = 1; i < N; i++)
{
a[i] = f(i);
}
while ((scanf("%d%d", &n, &m)) != EOF)
{
int num = 0;
if (n == 0 && m == 0)
{
break;
}
for (i = n ; i <= m; i++)
{
if (a[i])
{
num++;
}
}
printf("%d\n", num);
}
return 0;
}
</span>
参考博客:
http://blog.sina.com.cn/s/blog_a3ee7c7c01016zu5.html
http://blog.csdn.net/libin56842/article/details/9984857