去博客园看该题解


题目传送门 - BZOJ1968


题意概括

  求 ΣF(i)   (1<=i<=n)N<=1000000

  F(i)是i的约数个数


 

题解

  换一个角度思考,可以把原问题转化为:

  对于每一i,在1~n中有多少个倍数,所有的个数和就是答案。

  那么,ΣF(i) = ∑ floor(n/i)


 

代码

#include <bits/stdc++.h>
int n,ans=0;
int main(){
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
		ans+=floor(n*1.0/i);
	printf("%d",ans);
	return 0;
}

  

相关文章:

  • 2022-03-04
  • 2021-12-07
  • 2021-12-14
  • 2021-05-20
  • 2022-02-05
  • 2021-06-02
猜你喜欢
  • 2022-02-19
  • 2021-06-19
  • 2022-01-14
  • 2021-06-15
  • 2021-07-18
  • 2022-12-23
相关资源
相似解决方案