#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <map>
#include <queue>
#include <string>
#include <set>
#include <vector>
#include <stack>
#include <cmath>
using namespace std;
typedef long long ll;
const ll N=1e10;
vector<ll> q;
void dfs(ll a,int x,int y)
{
if(a>N) return;
q.push_back(a);
dfs(a*10+4LL,x+1,y);
dfs(a*10+7LL,x,y+1);
}
int main()
{
dfs(4,1,0);
dfs(7,0,1);
sort(q.begin(),q.end());
ll l,r;
while(~scanf("%lld%lld",&l,&r))
{
ll sum=0;
ll it1=(ll)(*lower_bound(q.begin(),q.end(),l));
if(it1>=r)
sum+=it1*(r-l+1);
else
{
sum+=it1*(it1-l+1);
l=it1;
while(1)
{
it1=(ll)(*upper_bound(q.begin(),q.end(),l));
if(it1<r)
{
sum+=it1*(it1-l);
l=it1;
}
else
{
sum+=it1*(r-l);
break;
}
}
}
printf("%lld\n",sum);
}
}
CF Lucky Sum
最新推荐文章于 2024-02-21 21:10:41 发布