前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