【Luogu P2568】GCD

可能更好的阅读


题目大意:

快速求:

[large{sum_{din prime}sum_{x=1}^{n}sum_{y=1}^{n}[gcd(x,y)==d]} ]

正文:

方法一:

通过预处理筛法筛出素数再暴力枚举(x)(y)

预期得分20分。

方法二:

在方法一的基础考虑化简式子,因为两者的最大公因数都是 (d),所以 (x|d)(y|d),那么:

[large{sum_{din prime}sum_{x=1}^{n}sum_{y=1}^{n}[gcd(x,y)==d] = sum_{din prime}sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}sum_{y=1}^{leftlfloordfrac{n}{d} ight floor}[gcd(x,y)==1]} ]

发现 (sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}sum_{y=1}^{leftlfloordfrac{n}{d} ight floor}[gcd(x,y)==1]) 有对称性,就是说假设 (x=3,y=5),像这样的情况,(x=5,y=3) 又算了一次,我们不妨把其式子化成 (sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}2sum_{y=1}^{x}[gcd(x,y)==1])。但这是错的,假设 (x=2,y=2),原本只算了一次,但我们算了两次,所以我们应该化成 (sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}(2sum_{y=1}^{x}[gcd(x,y)==1])-1)

又可以发现(sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}(2sum_{y=1}^{x}[gcd(x,y)==1])-1=2(sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}varphi(x))-1)

所以最后要求出:

[large{sum_{din prime}2(sum_{x=1}^{leftlfloordfrac{n}{d} ight floor}varphi(x))-1} ]

预期得分100分。

原文地址:https://www.cnblogs.com/GJY-JURUO/p/12199598.html