#include<bits/stdc++.h> typedef long long ll; using namespace std; vector<ll>pre; void dfs(ll n) { if(n>1e10+2)return ; pre.push_back(n); dfs(n*10+4); dfs(n*10+7); } int main() { ll r,l; ll sum=0; ll ant=0; scanf("%lld %lld",&l,&r); dfs(0); sort(pre.begin(),pre.end()); ll t1=lower_bound(pre.begin(),pre.end(),l)-pre.begin();//大于l第一个幸运数 ll t11=*lower_bound(pre.begin(),pre.end(),l); ll temp=upper_bound(pre.begin(),pre.end(),r)-pre.begin(); // cout<<t1<<" "<<temp<<endl; sum=(t11-l+1)*t11;//l之前的数 for(ll i=t1;i<=temp-2;i++){ sum+=((pre[i+1]-pre[i])*pre[i+1]); // cout<<sum<<endl; } sum+=(r-pre[temp-1])*pre[temp];//r之后的数 cout<<sum<<endl; return 0; }我按照你的思路改了一下85分,求大佬更正
点赞

相关推荐

ddd7_:跟我一模一样,加微信的hr都同一个,扫码了白年书人查看图片
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务