首页 > 代码库 > [luoguP1403] [AHOI2005]约数研究(这。。。)

[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;}

  

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