非常簡單的乙個數學題。
先放題目
科學家們在samuel星球上的探險得到了豐富的能源儲備,這使得空間站中大型計算機「samuel ii」的長時間運算成為了可能。由於在去年一年的辛苦工作取得了不錯的成績,小聯被允許用「samuel ii」進行數學研究。
小聯最近在研究和約數有關的問題,他統計每個正數n的約數的個數,並以f(n)來表示。例如12的約數有1、2、3、4、6、12。因此f(12)=6。下表給出了一些f(n)的取值:
f(n)表示n的約數個數,現在給出n,要求求出f(1)到f(n)的總和。
輸入一行,乙個整數n
輸出乙個整數,表示總和35
20%n<=5000
100%n<=1000000
首先,題意就是:
求在1~n中所有數的因子個數的和。
進一步明確,就是:
求在1~n中每個數在1~n中的倍數個數的總和。
怎麼求?
接下來進入數學環節!
首先,我們知道,在1~n中,全部都是1的倍數
有n/2的數是2的倍數..
....
以此類推,得到最終結果:
ans是從一到n的所有數分別作除數與n相除的商的和
o(n)搞定!
**也很短
下面是**時間
#includeusing namespace std;
int n, ans;
int main()
AHOI2005 約數研究
發現luogu的ui改版後ac以後不能給題目評定難度了 類似素數篩的一道題,不過是約數。先順手寫了個暴力做法,tle定了 includeusing namespace std long long n,sum 1000005 int main printf lld sum n return0 暴力o ...
AHOI2005 約數研究
其實是一道水題啦。我一開始的做法近似埃拉託斯特尼篩法,列舉每個約數,然後將其倍數的約數個數加1,最後統計。而一種更為簡便的方法是列舉1到n所有數,給答案加上n i。雖然這是道水題,但因為正解值得學習我才整理的!為什麼這樣是對的呢?顯然,1到n所有數的約數個數之和等於約數中含有1,2,n的數的個數之和...
數論 AHOI2005 約數研究
題目 找規律 以6為例 約數有1的數有6個 1 2 3 4 5 6 約數有2的數有3個 2,4,6 約數有3的數有2個 3,6 約數有4的數有0個 約數有5的數有0個 約數有6的數有1個 6 所以 約數有x的數有n除以x個 即 fn n 1 n 2 n 3.n n 如下 include includ...