牛客網---辛運數字2

題目描述 

定義一個數字爲幸運數字當且僅當它的所有數位都是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

#include<cstdio>
#include<algorithm>
using namespace std;
long long num[3000];
int cnt;
void dfs(long long s){

     if(s>4444444444ll)
     return;
     num[cnt++]=s;
     dfs(s*10+4);
     dfs(s*10+7);
}
int main(){
    long long l,r,sum=0;
    int j=1;
    cnt=0;
    dfs(0);
    sort(num,num+cnt);
//    for(int i=1;i<=10;i++){
//        printf("%lld ",num[i]);
//    }
    scanf("%lld %lld",&l,&r);
    for(long long i=l;i<=r;){
        if(i<=num[j]&&num[j]<=r){
            sum+=num[j]*(num[j]-i+1);
            i=num[j]+1;
            j++;
        }
        else if(i<=num[j]&&num[j]>r){
        sum+=num[j]*(r-i+1);
        i=r+1;
        }else{
            j++;

        }
    }
    printf("%lld\n",sum);
    return EXIT_SUCCESS;
}


發佈了279 篇原創文章 · 獲贊 66 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章