• 「不会」莫比乌撕函数


    Front:做第二个专题的时候,出现了一个弱智的盲区

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

    [f(x)=sumlimits_{x|d} F(d)*mu(frac{d}{x}) ]

    显然是正确的,是按照d比x多出的质因子集合进行容斥的。

    「yydgcd」

    [sumlimits_{i=1}^n sumlimits_{j=1}^m sumlimits_{kin prime}^{min(n,m)} [(i,j)==k] ]

    [sumlimits_{kin prime} sumlimits_{i=1}^{lfloor n/k floor} sumlimits_{j=1}^{lfloor m/k floor} [(i,j)==1] ]

    [sumlimits_{kin prime} sumlimits_{i=1}^{lfloor n/k floor} sumlimits_{j=1}^{lfloor m/k floor} sumlimits_{u|i&u|j} mu(u) ]

    [sumlimits_{kin prime} sumlimits_{u=1}^{lfloor min(n,m)/k floor} mu(u) lfloor frac{n}{ku} floorlfloor frac{m}{ku} floor ]

    [sumlimits_{s=1}^{min(n,m)} lfloorfrac{n}{s} floorlfloorfrac{m}{s} floor sumlimits_{kin prime} mu(frac{s}{k}) ]

    设$$f(s)=sumlimits_{kin prime} mu(frac{s}{k})$$
    则可以埃筛求出(f()),然后取前缀和,然后整除分块

    「数表」
    (f(x)=sumlimits{k|i}k)
    为积性函数,可以线筛
    考虑p的次幂被加入的次数

    [f(x*p)=f(x)*f(p) (x%p!=0) ]

    [f(x*p)=f(x)*f(p)-f(x/p)*p (x%p==0) ]

    然后

    [sumlimits_{i=1}^n sumlimits_{j=1}^m [f[(i,j)]<=lim]f[(i,j)] ]

    [sumlimits_{g=1}^n[f[g]<=lim]f[g]sumlimits_{i=1}^{lfloor n/g floor}sumlimits_{j=1}^{lfloor m/g floor}sumlimits_{u|i,j}mu(u) ]

    [sumlimits_{g=1}^n[f[g]<=lim]f[g]sumlimits_{u=1}^{min(n,m)}mu(u)lfloorfrac{n}{gu} floorlfloorfrac{m}{gu} floor ]

    [sumlimits_{s=1}^n lfloorfrac{n}{s} floorlfloorfrac{m}{s} floor sumlimits_{g|s} [f[g]<=lim]f[g]mu(frac{s}{g}) ]

    则可以将询问离线,从小到大解决所有的g,复杂度nlogn

    「DZYlovesmath」

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

    [sumlimits_{k=1}^n f[k]sumlimits_{i=1}^{lfloor n/k floor}sumlimits_{j=1}^{lfloor m/k floor}sumlimits_{u|i,u|j}mu(u) ]

    [sumlimits_{k=1}^n f[k]sumlimits_{u|i,u|j}mu(u) lfloor frac{n}{ku} floorlfloor frac{m}{ku} floor ]

    [sumlimits_{s=1}^n lfloorfrac{n}{s} floorlfloorfrac{m}{s} floor sumlimits_{k|s} f[k]*mu(frac{s}{k}) ]

    考察(F(s)=sumlimits_{k|s} f[k]*mu(frac{s}{k})),当(mu(frac{s}{k})!=0)时,(f[k])只有(f[s],f[s]-1)两种取值

    [F(s)=sumlimits_{k|s&f[k]==f[s]} f[s]*mu(frac{s}{k})+sumlimits_{k|s&f[k]==f[s]-1} (f[s]-1)*mu(frac{s}{k}) ]

    [F(s)=sumlimits_{k|s&f[k]==f[s]} f[s]*mu(frac{s}{k})+sumlimits_{k|s&f[k]==f[s]-1} f[s]*mu(frac{s}{k})-mu(frac{s}{k}) ]

    [F(s)=sumlimits_{k|s&f[k]==f[s]} f[s]*mu(frac{s}{k})+sumlimits_{k|s&f[k]==f[s]-1} f[s]*mu(frac{s}{k})+sumlimits_{k|s&f[k]<f[s]-1} f[s]*0 -mu(frac{s}{k}) ]

    [F(s)=f[s]*sumlimits_{k|s}mu(k) -sumlimits_{k|s&f[k]==f[s]-1} mu(frac{s}{k}) ]

    考察(f[s]*sumlimits_{k|s}mu(k)=f[s]*[s==1]),一定为0

    [F(s)=-sumlimits_{k|s&f[k]==f[s]-1} mu(frac{s}{k}) ]

    (s的质因子中次数为f[s]的集合为M),由于(f[k]==f[s]-1)(frac{s}{k})中必然包含M中所有元素一次且仅一次
    枚举其它因子包含在(frac{s}{k})中的数量,设s含有的质因数共c种

    [F(s)=-sumlimits_{i=0}^{c-|M|}C_{c-|M|}^i (-1)^{|M|+i} ]

    是一行组合数奇加偶减的形式,当(c-|M|>0)时显然为0
    否则(F(s)=-(-1)^{|M|}=(-1)^{|M|+1})
    于是愉快地线性求出了(F()),其余整除分块处理。

    「约数个数和」
    注意一个事实

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

    考虑((i*j))的约数d中每个质因子p的次数c_d,设((i*j))中的次数为(c_t),(i)中的次数为(c_i)
    规定若(c_d<=c_i),则x中p的次数为(c_d),y中不含p这一因子,则会作出应有的一个贡献
    (c_d>c_i),则x中不含p这一因子,y中含p的次数为(c_d-c_i),也会作出应有的一个贡献
    质因子之间互相独立,故上式正确

    「数字表格」「于神之怒加强版」「jzptab」的推导过程与上边几个十分相似..而且要更简单一点
    「一个人的数论」

    [sumlimits_{j|n} mu(j)*j^d sumlimits_{i=1}^{n/j} i^d ]

    自然数幂和拆成组合数和伯努利数,由

    [S_k(n)=frac{1}{k+1}sumlimits_{i=0}^k C_{k+1}^iB_in^{k+1-i} ]

    原式变为

    [sumlimits_{j|n} mu(j)*j^d*frac{1}{d+1} sumlimits_{i=0}^d C_{d+1}^iB_i (frac{n}{j})^{d+1-i} ]

    [frac{1}{d+1}sumlimits_{i=0}^d C_{d+1}^iB_in^{d+1-i}sumlimits_{j|n}mu(j)j^{i-1} ]

    (sumlimits_{j|n}mu(j)j^{i-1})为积性函数,可以对每个质因子快速算出并相乘得到n的函数值
    而外层d枚举即可

    「GuGuFish」
    我说这题目名怎么这么耳熟原来我去一家重庆咕咕鱼吃过鱼。。。
    那么把柿子搞开

    [sumlimits_{i=1}^n sumlimits_{j=1}^m prodlimits_{p|gcd(i,j)&pin Prime} frac{p}{p-1} ]

    (f(n)=prodlimits_{p|n&pin Prime} frac{p}{p-1}),那么这个函数可以线筛,我们先不管他

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

    [sumlimits_{g=1}^{min(n,m)}f(g)sumlimits_{i=1}^{lfloor n/g floor}sumlimits_{j=1}^{lfloor m/g floor}sumlimits_{u|i,j} mu(u) ]

    [sumlimits_{g=1}^{min(n,m)}f(g)sumlimits_{u=1}^{min(n,m)}mu(u)lfloorfrac{n}{ug} floorlfloorfrac{m}{ug} floor ]

    [sumlimits_{s=1}^{min(n,m)}lfloorfrac{n}{s} floorlfloorfrac{m}{s} floorsumlimits_{g|s}f(g)*mu(frac{s}{g}) ]

    (F(n)=sumlimits_{g|n}f(g)*mu(frac{n}{g})),考察这个函数,设其有平方因子(p^2),根据(frac{n}{g})中p的次数分情况讨论

    (!(p|frac{n}{g})),设此时(sumlimits_{g|n}f(g)*mu(frac{n}{g})=Val)

    (p|frac{n}{g}&!(p^2|frac{n}{g})),易知这一部分的(g)中仍含有p因子,即(f(g))不变
      而(mu(frac{n}{g}))中全部增加了p这一因子,变为相反数,则(sumlimits_{g|n}f(g)*mu(frac{n}{g})=-Val)

    (p^2|frac{n}{g}),则(mu(frac{n}{g})=0)

    (F(n)=Val+(-Val)+0=0),得到结论:若(mu(n)==0)(F(n)==0)
    此时(F())函数可以用线筛非常简单地求出了,再加上整除分块就行了

    「TrickGCD」
    利用调和级数,开值域桶,枚举+组合数求方案数,用Front求解。

    「Battlestation Operational」
    先把柿子套路展开,然后发现只需要处理函数(f(n)=sumlimits_{i=1}^n sumlimits_{j=1}^i lceil frac{i}{j} ceil)再上整除分块就行了
    也就是(h(n)=sumlimits_{i=1}^n lceil frac{n}{i} ceil)的前缀和
    向上取整很别扭,我们先求向下取整的(g(n)=sumlimits_{j=1}^i lfloor frac{n}{i} floor)
    可以递推,n增加1后,所有结果不会变小,除了不变的,会有(d(n))个被除数由于成为了n的因子而使商增加1
    得到(g(n)=g(n-1)+d(n)),只差最后一步将(g)转化为(h)
    由于(lceil frac{a}{b} ceil=lfloor frac{a-1}{b} floor+1)
    (h(n)=sumlimits_{i=1}^n lfloor frac{n-1}{i}+1 floor)

    [h(n)=sumlimits_{i=1}^{n-1} lfloor frac{n-1}{i} floor + lfloor frac{n-1}{n} floor + n=g(n-1)+n ]

    完美。

    「GCD of Sequence」
    考虑枚举d计算序列gcd是d的倍数的方案数,然后用Front求解
    值不是d的倍数的位置必须替换,选择有(lfloor frac{n}{d} floor)
    其余任意替换,但不能替换成自己,选择(lfloor frac{n}{d}-1 floor)种乘上组合数。

    「bookshelf」
    一些神奇的结论。
    1.(gcd(fib(i),fib(i+1))==1)
    (egin{aligned}\ gcd(f(i),f(i+1))&=gcd(f(i),f(i)+f(i-1))\ &=gcd(f(i-1),f(i))\ &=...\ &=gcd(f(1),f(2))=1 end{aligned})

    2.(gcd(fib(i),fib(j))==fib(gcd(i,j)),(i>j))
    (egin{aligned}\ gcd(f(i),f(j))&=gcd(f(i-1)+f(i-2),f(j))\ &=gcd(2f(i-2)+f(i-3),f(j))\ &=gcd(3f(i-3)+2f(i-4),f(j))\ &=gcd(f(j)f(i-j+1)+f(j-1)f(i-j))\ &=gcd(f(j-1)f(i-j),f(j))\ &=gcd(f(i-j),f(j))\ &=...\ &=gcd(f(i\%j),f(j))\ &=f(gcd(i,j)) end{aligned}),

    3.(gcd(2^i-1,2^j-1)=2^{gcd(i,j)}-1,(i>j))
    (egin{aligned}\ gcd(2^i-1,2^j-1)&=gcd(2^{i-j}(2^j-1)+2^{i-j}-1,2^j-1)\ &=gcd(2^{i-j}-1,2^j-1)\ &=...\ &=gcd(2^{i\%j}-1,2^j-1)\ &=2^{gcd(i,j)}-1\ end{aligned})

    用各种性质qj化一下柿子,只需要对每个d求(gcd(cnt_i)==d)的方案数就好了
    到这里用组合数乱搞就行了

    「Neko and function」
    设函数(f(n,k))为把n依次除以k个不为1的数变为1的方案数,不同除数不同顺序算不同方案
    给定k求它前n项的和,(n<=2^30)
    为了方便把不为1的限制去掉,设(g(n,k))为可以为1
    枚举除数的哪些位置不为1
    由于(g(k)=sumlimits_{i=1}^k C_k^if(i))
    (f(k)=sumlimits_{i=1}^k (-1)^{k-i}C_k^ig(i))
    这是二项式反演qwq

    根据g的定义,(g(n,k)=sumlimits_{d|n} g(d,k-1))

    [g(k)=g(k-1)*1 ]

    [g(k)*u=g(k-1) ]

    然后就可以杜教筛前缀和..递归30层,每层长的一样,复杂度(30*n^{frac{2}{3}})

  • 相关阅读:
    数据库
    多并发之协程
    坚持就是胜利
    线程
    python—函数
    pycharm—项目文件下的子目录的删除
    python—字符串连接方式
    python—字符串的切割
    pycharm教程
    python—迭代
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/12117845.html
Copyright © 2020-2023  润新知