您的位置:首页 > 其它

幸运数字 2

2018-03-17 17:38 148 查看
来源点击打开链接
链接:https://www.nowcoder.com/acm/contest/70/B
来源:牛客网

题目描述

定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如说,47、744、4都是幸运数字而5、17、467都不是。
定义next(x)为大于等于x的第一个幸运数字。给定l,r,请求出next(l) + next(l + 1) + ... + next(r - 1) + next(r)。

输入描述:

两个整数l和r (1 <= l <= r <= 1000,000,000)。

输出描述:

一个数字表示答案。
示例1

输入

2 7

输出

33
示例2

输入

7 7

输出

7
简单的二叉树结构,把幸运数字按顺序存入数组。[cpp] view plain copy            0  
     4           7  
44      47     74     77  
 447 474 477 744 747 774 777  
[cpp] view plain copy#include <iostream>  
#include <cstdio>  
#include <cstring>  
typedef long long ll;  
using namespace std;  
ll a[1050]={0};  
int main()  
{  
    ll k=0,s=0,l,r,p=1;  
    for(int i=1;i<=1024;i++)  
    {  
        int t=i/2+1,q=i%2?4:7;  
        a[i]=10*a[i-t]+q;  
    }  
    cin>>l>>r;  
    for(int i=0;i<=1024;i++)  
    {  
        if(a[i]>=l)  
        {  
            for(;l<=a[i];l++)  
            {  
                s+=a[i];  
                if(l==r)break;  
            }  
            if(l==r)break;  
        }  
    }  
    cout<<s<<endl;  
    return 0;  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: