出處
考慮到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...