题意 令\(f(i)\)表示\(i\)的约数个数,求\(\Sigma^n_{i=1}f(i)\). 做法 我们直接算每个数的贡献,问题可以转化成每个数在\(1\)到\(n\)中有多少个倍数,累加答案. 代码 #include<iostream> using namespace std; int main() { int ans=0,n; cin>>n; for (int i=1;i<=n;++i) ans+=n/i; cout<<ans<<endl;…
枚举约数,加上有这个约数的数个数 #include<iostream> #include<cstdio> using namespace std; const int N=1000005; int n; long long ans; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) ans+=n/i; printf("%lld\n",ans); return 0; }…
题意:记$f(n)$为$n$的约数个数,求$\sum_{i=1}^n f(i)$,$n \leq 10^6$. 我也不知道为什么我要来做这个- 直接枚举每个数会是哪些数的约数-复杂度$O(n log n)$ #include<cstdio> typedef long long lint; int n;lint ans; int main() { scanf("%d",&n); for(register int i=1;i<=n;i++) for(registe…