题目链接
题意
定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如说,47、744、4都是幸运数字而5、17、467都不是。
定义next(x)为大于等于x的第一个幸运数字。给定l,r,请求出next(l) + next(l + 1) + … + next(r - 1) + next®。
思路
- 把幸运数字打表
参考代码
#include<bits/stdc++.h>
using namespace std;
long long l,r,ans=0;
long long aa[1001000];
int cnt=0;
void dfs(long long x)
{
if(x>=4444444444) return;
aa[cnt++]=x*10+4;
aa[cnt++]=x*10+7;
dfs(x*10+4);
dfs(x*10+7);
}
int main()
{
dfs(0);
cin>>l>>r;
int pos=0;
sort(aa,aa+cnt);
for(int i=l; i<=r; i++)
{
while(aa[pos]<i)pos++;
ans+=aa[pos];
}
cout<<ans<<endl;
}