洛谷P1403 [AHOI2005]约数研究 数论 约数和

这一题没有必要把1到n这n个数的约数算出来再累加

可以发现n/i表示1到n中i的倍数(即约数中含有i的数有多少个)

那么ans=Σn/i(i从1到n)

#include<iostream>
using namespace std;
int n,ans,a[1000005];
void solve()
{
    int i;
    cin>>n;
    for(i=1;i<=n;i++)
        ans+=n/i;
    cout<<ans<<endl;
}
int main()
{
    solve();
}

猜你喜欢

转载自www.cnblogs.com/lyhhahaha/p/9966638.html
今日推荐