小明同學學習了不同的進製之後,拿起了一些數字做起了遊戲。小明同學知道,在日常生活中我們最常用的是十進位制數,而在計算機中,二進位制數也很常用。現在對於乙個數字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() 方法用於統計字串裡某個字元出現的次數。可選引數為在字串搜尋的開始與結束位置。
str2..count
(sub
,start=0
,end
=len
(string
))
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 可以看...