其他分享
首页 > 其他分享> > 前n项余数个数和

前n项余数个数和

作者:互联网

一:

计算贡献:前n项中,能被i(1~n)整除的数的个数为(n/i)个,,也就是 i 给前n项中(n/i)个数做了余数

#include<iostream>

using namespace std;

int main ()
{
    int n;
    cin>>n;
    long long ans=0;
    for(int i=1;i<=n;i++)
        ans+=n/i;
    cout<<ans<<endl;

    return 0;
}

将前n项加和即可

二:(查不多就是暴力)

步长计数

#include<iostream>

using namespace std;
int a[(int)1e5+5];
int main ()
{
    int n;
    cin>>n;
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j<=n;j+=i)
            a[j]++;
        ans+=a[i];
    }
    cout<<ans<<endl;
    return 0;
}

三:倍数法(超时)(nlog(n))

 

标签:项中,int,namespace,个数,long,ans,余数
来源: https://www.cnblogs.com/zwx7616/p/11304478.html