小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題: 定義函式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
小易計算這個問題遇到了困難,需要你來設計乙個演算法幫助他。
<?php
$num = trim(fgets(stdin));
function
jnum
($num)
for($i = 1; $i
<=$m; $i=$i+2)
}hell:
return
$res;
}function
jnum2
($num)
else}}
}hell:
return
$res;
}function
jnum3
($num)
if(($num&0x1) == 0)else
}//$sum = 0;
//for($i = 1; $i<=$num; $i++)
//echo $sum;
//echo jnum2($num);
echo jnum3($num);
開始常規思路,一直除錯的方法1,一直超時,改為方法2,還是超時,沒有什麼本質區別。
換思路。。
求sum(i)的過程中,如果i 為奇數可以直接求,就是 i 本身,即f(i) = i。
問題就是求所有f(i), i為偶數的和。
因為是最大奇約數,所以f(2k) = f(k),所以f(2) + f(4) + … + f(2k) = f(1) + f(2) + … + f(k);
所以,數學歸納法,可以求出通用公式
這個做法還是不容易想到的。。。這麼bt的題。。
最大的奇約數
參考 小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式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 ...
程式設計題 最大的奇約數
小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式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...
牛客網 最大的奇約數
小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式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...