主要考察前缀和,have判断的话可以用字符串。
```#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define get_sum(l,r) (l? sum[r]-sum[l-1] : sum[r])
const int N=1e6+9;
int arr[N];
int sum[N];
int have(int x)
{
string s=to_string(x);
if(s.find("38")!=-1 || s.find('4')!=-1)
return 1;
return 0;
}
int main()
{
//取消同步流
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//标记数组
int n,m;
for(int i=0;i<N;i++)
{
if(have(i))
arr[i]=1;
}
//前缀和数组
sum[0]=arr[0];
for(int i=1;i<N;i++)
sum[i]=sum[i-1]+arr[i];
while(cin>>n>>m && (n!=0 || m!=0))
{
cout<<get_sum(n,m)<<endl;
}
return 0;
}