P1403 [AHOI2005]约数研究(筛法)

题目描述

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

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

NNN 111 222 333 444 555 666
f(N)f(N)f(N) 111 222 222 333 222 444

现在请你求出:

∑i=1nf(i)\sum_{i=1}^n f(i) i=1nf(i)

输入格式

输入一个整数 nnn。

输出格式

输出答案。

输入输出样例

输入 #1
3
输出 #1
5
类似筛质数的过程,这里换成给对应位置++。最后求一个前缀和就行。
#include <bits/stdc++.h>
using namespace std;
int a[1000006]={0};//?不管用 
int main()
{    
    int n;
    cin>>n;
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;i*j<=n;j++)
        {
            a[i*j]++;
        }
    }
    for(i=1;i<=n;i++)a[i]+=a[i-1];
    cout<<a[n];
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/lipoicyclic/p/12422014.html