zoukankan      html  css  js  c++  java
  • [清华集训2012]模积和 题解

    [sumlimits^n_{i=1}sumlimits_{j=1}^m(n mod i) imes (m mod j) , i eq j ]

    一点点往下推。

    [sumlimits_{i=1}^nsumlimits_{j=1}^m (n mod i) imes (m mod j) - sumlimits_{i=1}^{min(n,m)} (n mod i) imes(m mod i) ]

    我们知道 (nmod i = n - i imesleftlfloorfrac{n}{i} ight floor)

    单独看前半部分可以得到

    [sumlimits_{i=1}^n (n - i imesleftlfloorfrac{n}{i} ight floor) sumlimits_{j=1}^m (m - j imesleftlfloorfrac{m}{j} ight floor) ]

    [(n^2 - sumlimits_{i=1}^n i imesleftlfloorfrac{n}{i} ight floor) imes (m^2 - sumlimits_{j=1}^m j imesleftlfloorfrac{m}{j} ight floor) ]

    我们设 (f(p,q) = sumlimits_{i=1}^q p imesleftlfloorfrac{p}{i} ight floor)

    显然上面这个东西可以数论分块搞出来。

    可以得到

    [(n^2 - f(n,n)) imes(m^2 - f(m,m)) ]

    这个显然也可以在 (O(sqrt n)) 的复杂度内求出来。

    再来看后半部分可以得到

    [sumlimits_{i=1}^{min(n,m)}(n-leftlfloorfrac{n}{i} ight floor imes i) imes (m - leftlfloorfrac{m}{i} ight floor imes i) ]

    我们记 (N = min(n,m))

    [Nnm - nsumlimits_{i=1}^N ileftlfloorfrac{m}{i} ight floor - msumlimits_{i=1}^N ileftlfloorfrac{n}{i} ight floor + sumlimits_{i=1}^N i^2 imes leftlfloorfrac{m}{i} ight floorleftlfloorfrac{n}{i} ight floor ]

    前缀平方和使用公式即可,其它用数论分块可以解决。

    最终复杂度 (O(qsqrt n))

  • 相关阅读:
    Vijos / 题库 / 输油管道问题
    军事机密(Secret.pas)
    1164 统计数字
    1142 奖学金 sort做法
    1487 大批整数排序
    1487 大批整数排序
    1545 最简单排序
    1470 数列处理
    1683 车厢重组
    spin.js无图片实现loading进度条,支持但非依赖jquery
  • 原文地址:https://www.cnblogs.com/nao-nao/p/14794447.html
Copyright © 2011-2022 走看看