zoukankan      html  css  js  c++  java
  • 【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分。

  • 相关阅读:
    第二阶段个人冲刺总结01
    软件工程学习进度表13
    软件工程学习进度表12
    个人博客(09)
    个人博客(07)
    个人博客(08)
    poj1562 DFS入门
    poj3278 BFS入门
    数组单步运算
    十天冲刺
  • 原文地址:https://www.cnblogs.com/GJY-JURUO/p/12199598.html
Copyright © 2011-2022 走看看