幸運數字

鏈接:https://www.nowcoder.com/acm/contest/70/B
來源:牛客網

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld

題目描述

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

簡單的二叉樹結構,把幸運數字按順序存入數組。

               0
        4           7
   44      47     74     77
444 447 474 477 744 747 774 777
#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;
}


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