http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1220

$G(n)=\sum\limits_{i=1}^n\sum\limits_{j=1}^n\sum\limits_{k=1}^{n^2}[k|ij]\cdot k$
$ \small{[k|ij]\to[\frac{k}{gcd(i,k)}|j]}$
$G(n)=\sum\limits_{i=1}^n\sum\limits_{j=1}^n\sum\limits_{k=1}^{n^2}[\frac{k}{gcd(i,k)}|j]\cdot k$
$ \small{gcd(i,k)\to g,i/g\to i,\sum\limits_{j=1}^X[Y|j]\to \lfloor\frac XY\rfloor}$
$G(n)=\sum\limits_{k=1}^{n^2}\sum\limits_{g|k}\sum\limits_{i=1}^{n/g}[gcd(i,k/g)=1]\lfloor\frac{n}{k/g}\rfloor\cdot k$
$ \small{k/g\to k}$
$G(n)=\sum\limits_{g=1}^{n}\sum\limits_{k=1}^{n}\sum\limits_{i=1}^{n/g}[gcd(i,k)=1]\lfloor\frac{n}{k}\rfloor\cdot k\cdot g$
$\small{[X=1]\to\sum\limits_{d|X}\mu(d)}$
$G(n)=\sum\limits_{g=1}^{n}\sum\limits_{k=1}^{n}\sum\limits_{i=1}^{n/g}\sum\limits_{d|i\wedge d|k}\mu(d)\lfloor\frac{n}{k}\rfloor\cdot k\cdot g$
$\small{i/d\to i,k/d\to k}$
$G(n)=\sum\limits_{d=1}^n\sum\limits_{g=1}^{n/d}\sum\limits_{k=1}^{n/d}\sum\limits_{i=1}^{n/gd}\mu(d)\lfloor\frac{n}{kd}\rfloor\cdot k\cdot g\cdot d$
$\small{\sum\limits_{i=1}^X1\to X}$
$G(n)=\sum\limits_{d=1}^n\sum\limits_{g=1}^{n/d}\sum\limits_{k=1}^{n/d}\mu(d)\lfloor\frac{n}{gd}\rfloor\lfloor\frac{n}{kd}\rfloor\cdot k\cdot g\cdot d$
$\small{\big(\sum\limits_{i=1}^{n}i\lfloor\frac{n}{d}\rfloor\big)^2\to F(n)}$
$G(n)=\sum\limits_{d=1}^n\mu(d)d\cdot F(\lfloor\frac{n}{d}\rfloor)$
$\small{G\to \sum g,F\to \sum f}$
$g(n)=\sum \limits_{d|n}\mu(d)d\cdot f(n/d)$
$f(n)=\sum \limits_{d|n}d\cdot g(n/d)$
$\small{\sum f\to F,\sum g\to G}$
$F(n)=\sum\limits_{d=1}^nd\cdot G(\lfloor\frac{n}{d}\rfloor)$
$G(n)=F(n)-\sum\limits_{d=2}^nd\cdot G(\lfloor\frac{n}{d}\rfloor)$

记录一下推公式过程。

最后用记忆化搜索就可以$O(n^{3/4})$过了,如果加上线性预处理可以做到$O(n^{2/3})$

#include<bits/stdc++.h>
typedef unsigned long long i64;
const int P=1e9+;
int n,vG[],vg[],B;
int G(int n){
int&ans=n<=B?vg[n]:vG[::n/n];
if(ans)return ans;
i64 s=,sx=n*;
for(int l=,r,c;l<n;l=r){
r=n/(c=n/(l+));
i64 t=i64(r+l+)*(r-l);
sx+=t*c;
s+=t%P*G(c);
if(s>i64(1.5e19))s%=P;
}
sx=sx/%P;
s=(sx*sx%P-s%P*((P+)/)%P+P)%P;
return ans=s;
}
int main(){
scanf("%d",&n);
B=sqrt(n);
printf("%d\n",G(n));
return ;
}

51nod1220 约数之和的更多相关文章

  1. [51nod1220] 约数之和(杜教筛+莫比乌斯反演)

    题面 传送门 题解 嗯--还是懒得写了--这里 //minamoto #include<bits/stdc++.h> #define R register #define IT map&l ...

  2. 51NOD 1220 约数之和 [杜教筛]

    1220 约数之和 题意:求\(\sum_{i=1}^n \sum_{j=1}^n \sigma_1(ij)​\) \[ \sigma_0(ij) = \sum_{x\mid i}\sum_{y\mi ...

  3. 【动态规划】mr359-最大公约数之和

    [题目大意] 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 输入一个正整数S. 输出最大的约数之和. 样例输入 Sample Input 11 样例输出 Sample ...

  4. 51Nod 约数之和

                              1220 约数之和                                  题目来源: Project Euler 基准时间限制:3 秒 ...

  5. 约数之和(POJ1845 Sumdiv)

    最近应老延的要求再刷<算法进阶指南>(不得不说这本书不错)...这道题花费了较长时间~(当然也因为我太弱了)所以就写个比较易懂的题解啦~ 原题链接:POJ1845 翻译版题目(其实是AcW ...

  6. [51Nod 1220] - 约数之和 (杜教筛)

    题面 令d(n)d(n)d(n)表示nnn的约数之和求 ∑i=1n∑j=1nd(ij)\large\sum_{i=1}^n\sum_{j=1}^nd(ij)i=1∑n​j=1∑n​d(ij) 题目分析 ...

  7. POJ1845Sumdiv题解--约数之和

    题目链接 https://cn.vjudge.net/problem/POJ-1845 分析 \(POJ\)里的数学题总是这么妙啊 首先有一个结论就是\(A=\prod{ \ {p_i}^{c_i} ...

  8. 【51nod1220】约数之和

    题目 d(k)表示k的所有约数的和.d(6) = 1 + 2 + 3 + 6 = 12. 定义S(N) = ∑1<=i<=N ∑1<=j<=N d(i*j). 例如:S(3) ...

  9. ZZNU 正约数之和

    #include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...

随机推荐

  1. String、StringBuilder、StringBuffer的区别

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > ...

  2. wxPython制作跑monkey工具(python3)-带显示设备列表界面

    一. wxPython制作跑monkey工具(python3)-带显示设备列表界面  源代码 Run Monkey.py #!/usr/bin/env python import wx import ...

  3. Dapp混合模型开发--Dice2win的解读

    前言: 之前讲到Dapp原生态对随机函数的支持并不友好, 现在讲讲一种解决思路. 既能保证随机函数的不可预测性, 又能保证公平性, 平台和玩家都能满意. 而Dapp中的Dice2Win实现, 刚好是其 ...

  4. Ubuntu如何百度云盘下载

    我使用Firefox浏览器下载. (1)先为浏览器下载一个插件:网盘助手 (2)通过终端安装aria2: sudo apt-get install python-apt sudo apt-get in ...

  5. php中print、echo、print_r、var_dump的区别

    echo,print,print_r,var_dump区别 print只能接收一个字符串:print有返回值1(可在表达式中使用) e.g print 'string 1' e.g if($exp & ...

  6. Java程序第二次作业

    1.编写“人”类及其测试类.1.1 “人”类: 类名:Person 属性:姓名.性别.年龄.身份证号码 方法:在控制台输出各个信息1.2 测试类 类名:TestPerson 方法:main ...

  7. 阿里云一 第一篇:云服务器ECS

    阿里云(www.aliyun.com)创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业.开发者和政府机构提供服务.截至2017年3月,阿里云付费云计算用户达87.4 ...

  8. 让Entity Framework不再私闯sys.databases

    这里的“私闯sys.databases”是指Entity Framework默认发起的查询:SELECT Count(*) FROM sys.databases WHERE [name]=N'数据库名 ...

  9. 普通Linux用户1分钟上手vi编辑器

    *导读:普通用户只要花1分钟看第二部分即可.高级用户请忽略本文* 目录 1. 编辑器之战 2. vi的使用 2.1 vi的3个模式 2.2 vi的3个模式切换 2.3 vi最基本的命令 2.4 vi的 ...

  10. 查看那些进程使用了swap

    https://blog.csdn.net/xiangliangyu/article/details/8213127$ sudo pacman -S iotop https://blog.longwi ...