zoukankan      html  css  js  c++  java
  • 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)

    题目大意:

    (d(x))(x)的约数个数,给定(n,m),求

    [sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}d(ij) ]

    首先我们需要知道一个神仙定理:

    [d(ij)=sumlimits_{x|i}sumlimits_{y|j}[gcd(x,y)==1] ]

    证明:

    假设(ij)中存在因子(p^k),且(i)(p)的最高次因子为(p^{k_1}),且(j)(p)的最高次因子为(p^{k_2}),那么:

    (k<=k_1) 我们可以认为在(i)中选择了(k)
    (k>k_1) 我们可以认为在&i&总选择了(k_1)个,并且在(j)中选择了(k-k_1)
    这样就可以构成一个任意一个质因子的任意次幂的映射,这个映射成立的前提是([gcd(i,j)==1])
    就这样证完啦_(:з」∠)_

    所以根据神仙定理

    [ret=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}sumlimits_{x|i}sumlimits_{y|j}[gcd(x,y)==1] ]

    把枚举因子提前,枚举倍数

    [ret=sumlimits_{x=1}^{n}sumlimits_{y=1}^{m}lfloorfrac{n}{x} floor lfloorfrac{m}{y} floor [gcd(x,y)==1] ]

    (x,y)看着不顺眼,改成(i,j)(qwq)

    [ret=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}lfloorfrac{n}{i} floor lfloorfrac{m}{j} floor [gcd(i,j)==1] ]

    按照(YY)(GCD)的套路,设

    [f(x)=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}lfloorfrac{n}{i} floor lfloorfrac{m}{j} floor [gcd(i,j)==x] ]

    [g(x)=sumlimits_{x|d}f(d) ]

    [g(x)=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}lfloorfrac{n}{i} floor lfloorfrac{m}{j} floor [x|gcd(i,j)] ]

    (x)提出来,消除(gcd)的影响

    [g(x)=sumlimits_{i=1}^{lfloorfrac{n}{x} floor}sumlimits_{j=1}^{lfloorfrac{m}{x} floor}lfloorfrac{n}{ix} floor lfloorfrac{m}{jx} floor ]

    根据莫比乌斯反演第二形式,有

    [f(n)=sumlimits_{n|d}mu(frac{d}{n})*g(d) ]

    由题意得

    [ret=f(1)=sumlimits_{1|d}mu(frac{d}{1})*g(d)=sumlimits_{d=1}^{min(n,m)}mu(d)g(d) ]

    (g(i))展开得到

    [ret=sumlimits_{d=1}^{min(n,m)}mu(d)sumlimits_{i=1}^{lfloorfrac{n}{d} floor}sumlimits_{j=1}^{lfloorfrac{m}{d} floor}lfloorfrac{n}{di} floorlfloorfrac{m}{dj} floor ]

    发现(lfloorfrac{n}{di} floor)(j)没有关系,把它提前

    [ret=sumlimits_{d=1}^{min(n,m)}mu(d)sumlimits_{i=1}^{lfloorfrac{n}{d} floor}lfloorfrac{n}{di} floorsumlimits_{j=1}^{lfloorfrac{m}{d} floor}lfloorfrac{m}{dj} floor ]

    到此,我们可以设

    [s(n)=sumlimits_{i=1}^{n}lfloorfrac{n}{i} floor ]

    这个(s)可以(O(nsqrt{n}))预处理

    [ret=sumlimits_{d=1}^{min(n,m)}mu(d)s(lfloorfrac{n}{d} floor)s(lfloorfrac{m}{d} floor) ]

    然后直接除法分块就好了,复杂度(O(nsqrt{n}+Tsqrt{n}))

  • 相关阅读:
    ExtJs多级联动菜单的一种实现
    初学jquery之自学笔记(2)
    微软MVP评Silverlight的功能特性和价值
    利用XMLFormView在Web部件页中或者自定义页面中嵌入Infopath表单
    初学jquery之自学笔记(3)
    我想大声告诉你
    HTC G7 金卡 制作
    黑苹果配置
    我的Android 从 2.3开始! 开发环境搭建
    新台式机配置表
  • 原文地址:https://www.cnblogs.com/knife-rose/p/12016959.html
Copyright © 2011-2022 走看看