zoukankan      html  css  js  c++  java
  • 杜教筛刷题总结

    写在前面:

    其实只有一道题

    2020.01.01update:博客锅了非常抱歉,感谢sbskyh&tdcp指出

    DZY Loves Math IV

    $n$很小可以考虑枚举$1$到$n$
    对于一个枚举出来的$n$

    考虑把$n$拆为$x*y$

    其中$x$为$n$的每个质因子的1次方的乘积,$y=frac{n}{x}$
    $S(n,m)=sumlimits_{i=1}^{m}varphi{(n*i)}$

    $S(n,m)=y*sumlimits_{i=1}^{m}varphi{(frac{x}{(x,i)})}*varphi{(i)}*(x,i)$

    $S(n,m)=y*sumlimits_{i=1}^{m}varphi{(frac{x}{(x,i)})}*varphi{(i)}sumlimits_{j|(x,i)}varphi{(j)}$

    $S(n,m)=y*sumlimits_{i=1}^{m}varphi{(i)}sumlimits_{j|(x,i)}varphi{(frac{x}{j})}$

    $S(n,m)=y*sumlimits_{j|x}varphi{(frac{x}{j})}sumlimits_{i=1}^{lfloor frac{m}{j} floor}varphi{(i*j)}$

    $S(n,m)=y*sumlimits_{j|x}varphi{(frac{x}{j})}*S(j,lfloor frac{m}{j} floor)$

    递归解决即可

    递归边界:
    1>$n==1$杜教筛求$ans=sumlimits_{i=1}^{m}varphi{(i)}$
    2>$m<=1 ans=m*varphi{(n)}$

  • 相关阅读:
    KMP算法
    快速排序的三种分区方法
    广义表
    外部排序(败者树、置换-选择排序、最佳归并树)
    内部排序
    散列表
    B树和B+树
    查找(顺序、折半、分块)
    关键路径
    拓扑排序
  • 原文地址:https://www.cnblogs.com/AthosD/p/12124630.html
Copyright © 2011-2022 走看看