京東 幸運數

2021-08-07 19:09:49 字數 1914 閱讀 9994

小明同學學習了不同的進製之後,拿起了一些數字做起了遊戲。小明同學知道,在日常生活中我們最常用的是十進位制數,而在計算機中,二進位制數也很常用。現在對於乙個數字x,小明同學定義出了兩個函式f(x)和g(x)。 f(x)表示把x這個數用十進位制寫出後各個數字上的數字之和。如f(123)=1+2+3=6。 g(x)表示把x這個數用二進位制寫出後各個數字上的數字之和。如123的二進位制表示為1111011,那麼,g(123)=1+1+1+1+0+1+1=6。 小明同學發現對於一些正整數x滿足f(x)=g(x),他把這種數稱為幸運數,現在他想知道,小於等於n的幸運數有多少個?不包含0。

每組資料輸入乙個數n(n<=100000)

每組資料輸出一行,小於等於n的幸運數個數。

示例1

21

3

1.python count() 方法用於統計字串裡某個字元出現的次數。可選引數為在字串搜尋的開始與結束位置。

str

.count

(sub

,start=0

,end

=len

(string

))

2.

python中進製轉換的內建函式:

(1)bin():轉二進位制,前帶'0b'字串;oct():轉八進位制,前帶'0o'字串;hex():轉十六進製制,前帶'0x'字串;int('字串',x):將x進製下的『字串』數字,轉換成十進位制。

(2)可以利用格式化字串函式:format

b、d、o、x分別是二進位制、十進位制、八進位制、十六進製制。

''.format(17)

'10001'

''.format(17)

'17'

''.format(17)

'21'

''.format(17)

'11'

n=int(input())

count=0

for m in range(1,n+1):

sum1=0

m0=m

while m0>0:

sum1+=m0%10

m0=m0//10

sum2=0

m1=m

while m1>0:

sum2+=m1%2

m1=m1//2

if sum1==sum2:

count+=1

print(count)

##利用python內建函式轉換進製:

'''l=bin(m1)

sum2=l.count('1')

'''

京東筆試題 幸運數

小明同學學習了不同的進製之後,拿起了一些數字做起了遊戲。小明同學知道,在日常生活中我們最常用的是十進位制數,而在計算機中,二進位制數也很常用。現在對於乙個數字x,小明同學定義出了兩個函式f x 和g x f x 表示把x這個數用十進位制寫出後各個數字上的數字之和。如f 123 1 2 3 6。g x...

京東2017校園招聘程式設計題 幸運數

題目 4和7是兩個幸運數字,我們定義,十進位制表示中,每一位只有4和7兩個數的正整數都是幸運數字。前幾個幸運數字是 4,7,44,47,74,77,444,447 輸入 數字k輸出 第k個幸運數 樣例輸入 3 5 100 10000000 樣例輸出 74 744747 447744474474774...

尋找幸運數

4和7是幸運數字,由它們所組成的數也是幸運數字。例如 44,47,474,7447等等。這一系列幸運數由小到大構成了幸運數列。現在,需要設計乙個演算法找出第n個幸運數是多少。我們可以將幸運數列分組 4,7 44,47,74,77 444,447,474,477,744,747,774,777 可以看...