zoukankan      html  css  js  c++  java
  • 牛客-幸运数字Ⅱ

    https://ac.nowcoder.com/acm/contest/5086/E
    题意:一串数字只有7和4,称之为幸运数字。给一个区间(包括端点)和一个函数next(x),即大于x的第一个幸运数字。求区间内的next(x)的和。

    思路:打表,然后运用前缀和进行优化。

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<queue> 
    using namespace std;
    typedef long long ll;
    ll num[1000100],a[1000100],num_cnt=1,sum[1000100];
    void bfs(){
    	ll cur;
    	queue<ll>sui;
    	sui.push(4);
    	sui.push(7);
    	while(1){
    		cur=sui.front();
    		sui.pop();
    		if(cur>4444444444) return ;
    		num[num_cnt++]=cur;
    		sui.push(cur*10+4);
    		sui.push(cur*10+7);
    	} 
    }
    int main(){
    	ll r,l;
    	cin>>r>>l;
    	bfs();
    	for(int i=1;i<=num_cnt;i++){
    		sum[i]+=sum[i-1]+(num[i]-num[i-1])*num[i];
    	}
    	ll r1=lower_bound(num+1,num+1+num_cnt,r)-num;
    	ll l1=lower_bound(num+1,num+1+num_cnt,l)-num;
    	ll sum1=(num[r1]-r)*num[r1]+sum[l1]-sum[r1]-(num[l1]-l)*num[l1]+num[r1];
    	cout<<sum1<<endl;
    	return 0; 
    }
    

      

  • 相关阅读:
    golang的server push
    go context学习
    go struct{} 空结构体的特点和作用
    Java基本语法--关键字&标识符
    初识Java
    Dos常用命令
    Markdown进阶教程
    Markdown基础教程
    Navicat Premium15安装与激活
    JDK的安装与环境配置(Windows10)
  • 原文地址:https://www.cnblogs.com/xinpingqihe/p/12663727.html
Copyright © 2011-2022 走看看