zoukankan      html  css  js  c++  java
  • 51nod-1220-约数之和

    题意

    [sum _{i=1}^nsum _{j=1}^nd(ij) \ d(x)=sum _{e|x}e ]

    (nle 10^9)

    分析

    没有推出来。这题有几个要点要学习。

    第一,推式子要有方向,不能看到什么就动一动,最后搞出来一个算不了的东西。

    第二,对于同一个多重和式的不同处理:

    [sum _{i=1}^nsum _{j=1}^{lfloorfrac{n}{i} floor}=sum _{j=1}^nsum _{i=1}^{lfloorfrac{n}{j} floor}=sum _{ijle n}=sum _{i=1}^nsum _{j|i} ]

    不同的情况可以用不同的处理,不过最后两种在平常的题目中用的比较少,主要是在推杜教筛表达式的时候会经常使用这种方法。

    第三,看到可以化开的东西不要急,先把其他东西处理好,变成一个比较漂亮的形式再处理这个。

    第四,求和上界的选取。在推式子的过程中,为了化简,可以把求和上界做一些不影响答案的改动,使得它与其他变量无关。比如说

    [sum _{i=1}^nsum _{j=1}^{lfloorfrac{n}{i} floor}jlfloorfrac{n}{ij} floor ]

    这里既然当 (j>lfloorfrac{n}{i} floor) 的时候后面的值为 0,那不如直接把 (j) 的求和上界改为 (n) ,简化一些条件。

    于是就可以开始推这题了。

    [egin{aligned} sum _{i=1}^nsum _{j=1}^nsum _{d|ij}d&=sum _{i=1}^nsum _{j=1}^n[frac{d}{gcd(d,i)}|j]d \ &=sum _{i=1}^nsum _{d=1}^{n^2}dlfloorfrac{ngcd (d,i)}{d} floor && (简化d的求和上界)\ &=sum _{e=1}^nsum _{i=1}^{lfloorfrac{n}{e} floor}sum _{d=1}^{lfloorfrac{n^2}{e} floor}delfloorfrac{ne}{de} floor[gcd(i,d)=1] \ &=sum _{e=1}^nesum _{i=1}^{lfloorfrac{n}{e} floor}sum _{d=1}^{n}dlfloorfrac{n}{d} floor[gcd(i,d)=1] && (再次简化d的求和上界) \ &=sum _{i=1}^nsum _{e=1}^{lfloorfrac{n}{i} floor}esum _{d=1}^ndlfloorfrac{n}{d} floor[gcd(d,i)=1] \ &=sum _{a=1}^nmu (a)sum _{i=1}^{lfloorfrac{n}{a} floor}g(lfloorfrac{n}{ai} floor)sum _{d=1}^{lfloorfrac{n}{a} floor}adlfloorfrac{n}{ad} floor end{aligned} ]

    (g(n)=sum _{i=1}^nlfloorfrac{n}{i} floor,f(n)=sum _{i=1}^nilfloorfrac{n}{i} floor) ,那么

    [ans=sum _{a=1}^namu (a)g(lfloorfrac{n}{a} floor)f(lfloorfrac{n}{a} floor) ]

    (O(n^frac{3}{4})) 计算。

  • 相关阅读:
    Spyder的汉化
    Python,Pycharm,Anaconda等的关系与安装过程~为初学者跳过各种坑
    好了,我的第一篇博客!
    Xcode 最低要求和支持的 SDK
    python连接hive (安装impyla)的采坑之旅
    java泛型(泛型接口、泛型类、泛型方法)
    oracle命令查看表结构及表索引
    Linux环境下安装、配置Nginx1.14.2(CentOS Linux release 7.6.1810)
    Caffe入门随笔
    Gradient Boosting算法简介
  • 原文地址:https://www.cnblogs.com/owenyu/p/7399234.html
Copyright © 2011-2022 走看看