第K個幸運數字(4 7)

2022-09-17 05:48:15 字數 759 閱讀 4951

題目: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, 11, 000, 001...對應的十進位制是:

0, 1, 0, 1, 2, 3, 0, 1...看著沒什麼規律啊,不好處理,關鍵的問題在於00,01,000等都因為前邊是0失去了本身的大小,那麼如果我們在前面都加個1呢?

10, 11, 100, 101, 110, 111, 1000, 1001...變成十進位制:

2, 3, 4, 5, 6, 7, 8, 9...

規律出來了。

我要求第k個數字,那麼反向推不就得了。

先把k變成二進位制(k+1的二進位制),然後去掉最前面的1,然後將0替換為4,將1替換為7。答案就出來了。

**如下:

#includeusing

namespace

std;

typedef

long

long

ll;ll a[

1000

];ll f(ll n)

for(i=j-2;i>=0;i--)

}int

main()

return0;

}

第K個幸運數

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

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