演算法 京東筆試 關於第K個幸運數(4和7)的演算法

2021-07-22 11:15:56 字數 407 閱讀 6188

幸運數由4和7構成,幸運數按照從小到大的排列。可以發現這其實就是樹的廣度優先搜尋。廣度優先搜尋到的節點與根節點(設為空值)的路徑上組成的數就是按照從小到大讀的。

本文想出一種較為直觀的演算法。第一步,求出樹的深度;第二步,求出最後一行有多少元素。根據元素的奇偶性質可以判斷父節點時4還是7 ,迴圈到頂 ;第三步,利用堆疊彈出即可。

現場很遺憾麼有寫出,希望以後謀定而後動,掌握好自己的節奏很重要!

#include#include#includeusing namespace std;

int dep(int n)

else

levelnumlast=(levelnumlast+1)/2;

depth--;

} while(!ans.empty())

{ cout<

第K個幸運數

4和7是兩個幸運數字,我們定義,十進位制表示中,每一位只有4和7兩個數的正整數都是幸運數字。前幾個幸運數字為 4,7,44,47,74,77,444,447 現在輸入乙個數字k,輸出第k個幸運數。第一行乙個數字t t 1000 表示測試資料的組數。對於每組測試資料,輸出乙個數k 1 k 10 18 ...

第K個幸運數字(4 7)

題目 4和7是兩個幸運數字,我們定義,十進位制表示中,每一位只有4和7兩個數的正整數都是幸運數字,前幾個幸運數字為 4,7,44,47,74,77,444,447 輸出第k個數字。思路是 將4換成0,7換成1,那麼 4,7,44,47,74,77,444,447.變成了 0,1,00,01,10,1...

51nod 1635 第K個幸運排列

題意 求1 n的全排列中的第k種排列,其中有多少幸運數字處在幸運位置上。幸運數字以及位置的定義為只包含4和7 思路 我們知道13!大於1e9,根據全排列的順序顯然最多只有13個位置在發生重排,那麼我們可以根據輸入的k將n個位置分成兩個部分 前半部分為固定不動的部分 即1,2,3,4,後半部分為實際發...