题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089
有两种方法:
1.数位DP算法
2.暴力打表——真是个好法子!!!
接下来是注意点:
1.一般这种数组中的一个数减去一个数组的另一个数,sum[i]-sum[j],这时候就要注意是sum[i]-sum[j]还是sum[i]-sum[j-1]
2.打表就不要进行多余的循环和语句
题目代码:
#include<iostream>
using namespace std;
int sum[]={};
int solve(int n)
{
int pre=,now=;
while(n>)
{
now=n%;
if(now==)
return ;
if(now==&&pre==)
return ;
n=n/;
pre=now;
}
return ;
}
int main()
{
int n,m;
for(int i=;i<=;i++)
{
sum[i]=sum[i-];
if(solve(i))
sum[i]++;
}
while(cin>>n>>m)
{
if(n==&&m==)
break;
cout<<sum[m]-sum[n-]<<endl;
}
}