主要考察前缀和,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;
}