幸運數字 (打表 思路)

2021-08-17 05:57:22 字數 847 閱讀 3277

思路:

打表你會發現1e9以內的數,有1022個幸運數,將他們存入陣列即可。

然後查詢每乙個數的next(l)的值(我們這裡是按幸運數來計算的,不需要遍歷所有的數)。

列印幸運數的思路:因為只有4和7,所以先記錄4,和7,並放入佇列中,從佇列中取乙個數,將它分別乘以4和7,小於1e9的記錄並放入佇列中,直到隊列為空為止,最後要加入4444444444,因為例如1e9的next值為4444444444(upper_bound()會查詢到),從小到大排序即可。(因為next的特性,所以只能用upper_bound())

下面是**:

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int maxn=1e4+9;

ll cun[maxn];

int doo()//打表記錄每乙個幸運數

if(x*10+7

<1e9)

}return len;

}int main()

for(i++; cun[i]<=b; i++)//通過幸運值跳著查詢。

sum+=(cun[i]-cun[i-1])*cun[i];

if(cun[i]>b&&cun[i-1]!=b)//如果b不是乙個幸運值

sum+=(b-cun[i-1])*cun[i];

printf("%lld\n",sum);

}return

0;}

51Nod 幸運數字(打表)

1043 幸運號碼 基準時間限制 1 秒 空間限制 131072 kb 分值 20難度 3級演算法題 1個長度為2n的數,如果左邊n個數的和 右邊n個數的和,那麼就是乙個幸運號碼。例如 99 1230 123312是幸運號碼。給出乙個n,求長度為2n的幸運號碼的數量。由於數量很大,輸出數量 mod ...

python幸運數字判斷 幸運數字 小程式

問題描述 1 n個數字,每個數字的範圍 9999到9999,把這n個數字排序後,刪除奇數字的數,然後把剩餘的數按原位置排序後繼續刪除奇數字,直到剩餘乙個數為止,剩餘的數就是幸運數,輸出幸運數和它最初的位置。程式的輸入為兩個引數 數字的數量 n 具體的資料 以空格隔開 比如 6 66 666 6666...

幸運數字2

題目 定義乙個數字為幸運數字當且僅當它的所有數字都是4或者7。比如說,47 744 4都是幸運數字而5 17 467都不是。定義next x 為大於等於x的第乙個幸運數字。給定l,r,請求出next l next l 1 next r 1 next r include include include...