Python 網易筆試程式設計題( 最大的奇約數)

2021-07-30 03:04:51 字數 1143 閱讀 1451

如下是網易17年秋招程式設計題裡的題目

小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題: 定義函式f(x)為x最大的奇數約數,x為正整數。 例如:f(44) = 11.

現在給出乙個n,需要求出 f(1) + f(2) + f(3).......f(n)

例如: n = 7 

f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21

小易計算這個問題遇到了困難,需要你來設計乙個演算法幫助他。 

輸入描述:

輸入乙個整數n (1 ≤ n ≤ 1000000000)

輸出描述:

輸出乙個整數,即為f(1) + f(2) + f(3).......f(n)

輸入例子:

7

輸出例子:

21

我們知道乙個數是奇數時,其最大奇數公約數肯定是它本身;那麼當它是偶數時呢?直接除以2嘛~

好的,到這兒,我們運用一下遞迴的思想就可以解決了。

當引數為奇數時:

if n % 2 == 1:

return mysum(n-1) + n

當引數為偶數時:

if n % 2 == 0:

return mysum(n/2) + n**2 / 4

為什麼是n**2 / 4呢,就是乙個簡單的數列求和。n為偶數時,對1,3,5,...n-1求和即為n**2 / 4。

ok,最後照例附上

python

實現

#encoding:utf-8

def mysum(n):

if n==1:return 1

if n % 2 == 0:

return mysum(n/2) + n**2/4

if n % 2 == 1:

return mysum(n-1) + n

n = input()

n= int(n)

print mysum(n)

更多樣例請看這裡喲:

網易筆試程式設計題

時間限制 1秒 空間限制 262144k 又到了豐收的季節,恰逢小易去牛牛的果園裡遊玩。牛牛常說他對整個果園的每個地方都瞭如指掌,小易不太相信,所以他想考考牛牛。在果園裡有n堆蘋果,每堆蘋果的數量為ai,小易希望知道從左往右數第x個蘋果是屬於哪一堆的。牛牛覺得這個問題太簡單,所以希望你來替他回答。輸...

Python 網易筆試程式設計題(計算糖果)

如下是網易17年秋招程式設計題裡的題目 a,b,c三個人是好朋友,每個人手裡都有一些糖果,我們不知道他們每個人手上具體有多少個糖果,但是我們知道以下的資訊 a b,b c,a b,b c.這四個數值.每個字母代表每個人所擁有的糖果數.現在需要通過這四個數值計算出每個人手裡有多少個糖果,即a,b,c。...

網易筆試 程式設計

1 一片1000 1000的草地,初始站在 1,1 最左上角 每一秒小易都會橫向或縱向到相鄰草地吃草 不會越界 反派超超手上有n個陷阱,第i個陷阱位置 xi,yi 小易一旦進陷阱就會 獲,為解救小易,請計算小易最少多少秒可能會走入乙個陷阱,提前提醒小易 輸入描述 第一行 n 超超的陷阱數 第二行 n...