打表:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll l,r,j,ans,pos;
ll k[10005],g;
void dfs(ll x) {
if(x>4444444444) return ;
k[g++]=x*10+4;
k[g++]=x*10+7;
dfs(x*10+4);
dfs(x*10+7);
}
int main() {
scanf("%lld %lld",&l,&r);
dfs(0);
sort(k,k+g);
for(ll i=l; i<=r; i++) {
for(j=pos; k[j]<i; j++);
pos=j,ans+=(min(k[j],r)-i+1)*k[j];
i=k[j];
}
cout<<ans<<endl;
return 0;
}
------------恢复内容开始------------
[题目链接:幸运数字Ⅱ
打表:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll l,r,j,ans,pos;
ll k[10005],g;
void dfs(ll x) {
if(x>4444444444) return ;
k[g++]=x*10+4;
k[g++]=x*10+7;
dfs(x*10+4);
dfs(x*10+7);
}
int main() {
scanf("%lld %lld",&l,&r);
dfs(0);
sort(k,k+g);
for(ll i=l; i<=r; i++) {
for(j=pos; k[j]<i; j++);
pos=j,ans+=(min(k[j],r)-i+1)*k[j];
i=k[j];
}
cout<<ans<<endl;
return 0;
}
------------恢复内容结束------------