zoukankan      html  css  js  c++  java
  • Sumdiv(约数和问题)

    题目地址

    看到这题的题解,大佬都说是小学奥数,蔡得我不敢鸡声

    (a^b) 所有的约数之和 mod (9901) ((1<=a,b<=5*10^7))

    题解

    做这道题,我还赶紧去看了一下 唯一分解定理

    我们先把 (a) 分解质因数

    [a=p_1^{c_1}*p_2^{c_2}*...*p_n^{c_n} ]

    比如说 (12) 可以分成 (2^2+3^1)

    因为 同指数幂相乘,指数不变,底数相乘 ,所以就有:

    [a^b=p_1^{c_1*b}*p_2^{c_2*b}*...*p_n^{c_n*b} ]

    根据 唯一分解定理,(a^b) 的约数和就是

    [(1+p_1+p_1^2+...+p_1^{c_1*b})*(1+p_2+p_2^2+...+p_2^{c_2*b})*...*(1+p_3+p_3^2+...+p_3^{c_3*b}) ]

    大佬看出了是等比数列,而我这个蒟蒻没有看出来

    因为等比数列的求和公式要用除法,除法不满足 ( ext{mod}) 的分配律

    所以我们就迎来了这个题目的重点——分治

    ( ext{sum}(p,c)),为 ((1+p+p^2+...+p^{c}))

    • (c) 为奇数,则有

    [ ext{sum}(p,c)=(1+p+...+p^{frac{c-1}{2}})+(p^{frac{c+1}{2}}+...+p^c) ]

    [=1*(1+p+...+p^{frac{c-1}{2}})+frac{c+1}{2}*(1+p+...+p^{frac{c-1}{2}}) ]

    [=(1+frac{c+1}{2})* ext{sum}(p,frac{c-1}{2}) ]

    • (c) 为偶数数,类似的有

    [ ext{sum}(p,c)=(1+frac{p}{2})* ext{sum}(p,frac{p}{2}-1)*p^c ]

    结合快速幂,时间复杂度上可以过得去

    讲了这么多(虽然是看书),我忘了告诉你这个题目我是口胡的。

  • 相关阅读:
    HDUOJ---1863畅通工程
    HDUOJ---1879 继续畅通工程
    HDUOJ---1102Constructing Roads
    HDUOJ---1102Constructing Roads
    hdu--DFS
    poj1611---The Suspects
    nyoj-----幸运三角形
    HDUOJ --2523
    HDUOJ---1195Open the Lock
    HDUOJ----2952Counting Sheep
  • 原文地址:https://www.cnblogs.com/BaseAI/p/11411831.html
Copyright © 2011-2022 走看看