[luoguP1403] [AHOI2005]约数研究(这。。。)

传送门

 

用类似筛法的原理,就好啦

 

——代码

#include <cstdio>

int n, ans; 
int a[1000001];

int main()
{
	int i, j;
	scanf("%d", &n);
	for(i = 1; i <= n; i++)
		for(j = i; j <= n; j += i)
			a[j]++;
	for(i = 1; i <= n; i++) ans += a[i];
	printf("%d\n", ans);
	return 0;
}

 

换一个思路,考虑每一个数对答案的贡献,发现

1 是 n / 1

2 是 n / 2

3 是 n / 3

。。。。。。

那么枚举就好了

#include <cstdio>

int n, ans; 
int a[1000001];

int main()
{
	int i, j;
	scanf("%d", &n);
	for(i = 1; i <= n; i++) ans += n / i;
	printf("%d\n", ans);
	return 0;
}

  

posted @ 2017-06-19 18:11  zht467  阅读(117)  评论(0)    收藏  举报