如下是網易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...