Python是一種廣泛應用于數(shù)據(jù)挖掘、人工智能、機器學習等領域的編程語言。在在線編程環(huán)境(oj)中,Python也是一個非常流行的編程語言。下面我們就來看一道簡單的Python oj題目。
題目描述: 給定一個整數(shù)n,求小于等于n的所有正整數(shù)中,不同二進制表示下數(shù)字不同的數(shù)字個數(shù)。 例如: 當n=5時,小于等于5的所有正整數(shù)是1,2,3,4,5,其中只有2(二進制為10)和5(二進制為101)不同二進制表示數(shù)字不同,因此結果為2。 解題思路: 遍歷1-n的所有數(shù)字,分別將其轉為二進制數(shù),并統(tǒng)計其中1的個數(shù),然后將所有數(shù)字1的個數(shù)存入一個集合中,最后統(tǒng)計集合的長度即可。 AC代碼如下:
n = int(input()) res = set() # 用set保證不會有重復元素 for i in range(1,n+1): x = bin(i)[2:] # 將i轉為二進制數(shù) cnt = x.count('1') # 統(tǒng)計1的個數(shù) res.add(cnt) print(len(res))
這道題目雖然簡單,但是也需要對Python語言有一定的掌握。我們可以通過不斷地練習類似的Python oj題目,來提高我們的編程技能,更好地應用Python語言。