BZOJ1968

Author Avatar
tkandi 9月 25, 2017
  • 在其它设备中阅读本文章

[AHOI2005]COMMON 约数研究

Time Limit: 1 Sec Memory Limit: 64 MB

Description

科学家们在 Samuel 星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机 “Samuel II” 的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用 “Samuel II” 进行数学研究。

小联最近在研究和约数有关的问题,他统计每个正数$N$的约数的个数,并以$f(N)$来表示。例如$12$的约数有$1$、$2$、$3$、$4$、$6$、$12$。因此$f(12)=6$。下表给出了一些$f(N)$的取值:

$n$ 1 2 3 4 5 6
$f(n)$ 1 2 2 3 2 4

现在小联希望用 “Samuel II” 来统计$f(1)$到$f(n)$的累加和$M$。

Input

只有一行一个整数$N$($0 < N < 1000000$)。

Output

只有一行输出,为整数$M$,即$f(1)$到$f(N)$的累加和。

Sample Input

3

Sample Output

5

Solution

对于$i$,它会成为$i$,$i \times 2$,…,$i \times (n / i)$的因子,它对答案的贡献为$n / i$。

Standard

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int n, sum = 0;

int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i)
        sum += n / i;
    printf("%d\n", sum);
    return 0;
}