[AHOI2005]约数研究

发布时间 2023-05-26 17:41:28作者: o-Sakurajimamai-o

没错,数学也有分类了qaq,我之前学算法的时候妹学数学,今天算是被搞怕了(但还是不听ovo)

学会了两种方法,主要思想还是,对于每个i来说,他在从1-n中的贡献值是n/i,也就是1-n中约数含有它的数目是n/i(厉害吧,刚学的)
另外一种方法是筛法,说实话这个你应该想到的(恼),不优化会爆的(30分)

题目描述

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

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

N112233445566
f(N) 11 22 22 33 22 44

现在请你求出:

f[i]的前n项和

输入格式

输入一个整数 n。

输出格式

输出答案。

输入输出样例

输入 #1
3
输出 #1
5

说明/提示

  • 对于 20%20% 的数据,
    //方法一:
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long res=0;
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) res+=n/i;
        cout<<res;
    }
    //筛法
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1000010;
    int f[N],n,res;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=n;j+=i) f[j]++;
            res+=f[i];
        }
        cout<<res;
        return 0;
    }

     

    ≤5000N5000;
  • 对于 100%100% 的数据,1≤≤1061N106。