幸運數字 (暴力搜尋dfs)

2021-10-22 08:38:28 字數 775 閱讀 3001

出處

考慮到1000,000,000內的符合題意的幸運數字數量級在可接受範圍內,就可以用dfs提前打表將幸運數字都找出來,需要注意的是,因為是要求大於等於的第乙個幸運數字,當x為1000,000,000時,幸運數字就是4444,444,444,需要將其特別加上。

之後乙個難點是利用lower_bound找到l和r所在的位置,之後確定符合要求的幸運數字個數,參照ans += (min(luck[i], r) - l + 1) * luck[i]。(對我而言比較難想,需要多多體會。)最後需要注意的是需要開longlong的變數即可。

#include

#include

using

namespace std;

const

int maxn =

1e6+9;

typedef

long

long ll;

ll l, r;

ll luck[maxn]

;int cnt;

ll ans;

void

dfs(ll x)

luck[cnt++

]= x *10+

4;luck[cnt++

]= x *10+

7;dfs(x *10+

4);dfs

(x *10+

7);}

intmain()

cout << ans <<

"\n"

;return0;

}

藍橋杯 幸運數(暴力?)

問題描述 幸運數是波蘭數學家烏拉姆命名的。它採用與生成素數類似的 篩法 生成 首先從1開始寫出自然數1,2,3,4,5,6,1 就是第乙個幸運數。我們從2這個數開始。把所有序號能被2整除的項刪除,變為 1 3 5 7 9 把它們縮緊,重新記序,為 1 3 5 7 9 這時,3為第2個幸運數,然後把所...

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...