AHOI2005 約數研究

2021-08-17 08:25:15 字數 747 閱讀 8297

非常簡單的乙個數學題。

先放題目

科學家們在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...