【学术篇】luogu3768 简单的数学题(纯口胡无代码)
真是一道“简单”的数学题呢~
反演题, 化式子.
\[
ans=\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j) \\ =\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^nij[gcd(i,j)=d]\\ =\sum_{d=1}^nd\sum_{i=1}^n\sum_{i=1}^nij[gcd(i,j)=1]\\ =\sum_{d=1}^nd^3\sum_{i=1}^{\left \lfloor \frac nd \right \rfloor}\sum_{j=1}^{\left \lfloor \frac nd \right \rfloor}ij[gcd(i,j)=1] \\ =\sum_{d=1}^nd^3\sum_{i=1}^{\left \lfloor \frac nd \right \rfloor}i\sum_{j=1}^{\left \lfloor \frac nd \right \rfloor}j[gcd(i,j)=1] \\ =\sum_{d=1}^nd^3\sum_{i=1}^{\left \lfloor \frac nd \right \rfloor}i\sum_{j=1}^{\left \lfloor \frac nd \right \rfloor}j\sum_{t|i,j}\mu(t) \\ i=tp,j=tq,\\ =\sum_{d=1}^nd^3\sum_{t=1}^{\left \lfloor \frac nd \right \rfloor}t^2\cdot\mu(t)\sum_{p=1}^{\left \lfloor \frac n{td} \right \rfloor}p\sum_{q=1}^{\left \lfloor \frac n{td} \right \rfloor}q \\ \because \sum_{i=1}^n=\frac {n(n+1)}2\\ \therefore ans=\sum_{d=1}^nd^3\sum_{t=1}^{\left \lfloor \frac nd \right \rfloor}t^2\cdot\mu(t)[\frac{n(n+1)}{2}]
\]
然后我们令\(T=id\), 枚举\(T\),
\[
ans=\sum_{T=1}^n[\frac{\left \lfloor \frac nT \right \rfloor(\left \lfloor \frac nT \right \rfloor+1)}{2}]^2\sum_{d|T}d^3(\frac Td)^2\mu(\frac Td) \\
=\sum_{T=1}^n[\frac{\left \lfloor \frac nT \right \rfloor(\left \lfloor \frac nT \right \rfloor+1)}{2}]^2T^2\sum_{d|T}d\mu(\frac Td) \\
=\sum_{T=1}^n[\frac{\left \lfloor \frac nT \right \rfloor(\left \lfloor \frac nT \right \rfloor+1)}{2}]^2T^2(n*\mu)(T) \\
=\sum_{T=1}^n[\frac{\left \lfloor \frac nT \right \rfloor(\left \lfloor \frac nT \right \rfloor+1)}{2}]^2T^2\varphi(T)
\]
然后我们令\(X=[\frac{\left \lfloor \frac nT \right \rfloor(\left \lfloor \frac nT \right \rfloor+1)}{2}]^2, f(T)=T^2\varphi(T)\), 这样就变成了
\[
ans=\sum_{T=1}^nXf(T)
\]
\(X\)可以分块然后\(O(1)\)算, 那我们只要能求出\(f(T)\)的前缀和就行了.
那\(n<=10^{10}\)要用杜教筛. 我们想一下杜教筛的通式:
\[
s_f(x)=\frac{s_{f*g}(x)-\sum_{i=2}^ns_f(\left \lfloor \frac ni \right \rfloor)g(i)}{g(1)}
\]
其中\(g(x)\)和\((f*g)(x)\)是易求前缀和的函数.
看到这种乘积的前缀和我们又想到了之前做lcm之和的提出乘积中某一项的高端操作, 我们就试着让\(g(x)\)去卷\(n^2\)(就是\(f(x)=x^2\)啦).
然后
\[
g(x)=(n^2\cdot\varphi)(x) \\
(g*n^2)(x)=((n^2\cdot\varphi)*n^2)(x)=(n^2\cdot(\varphi*1))(x)=(n^2\cdot n)(x)=n^3(x)
\]
然后\(n^3(x)\)的前缀和也是有公式的可以\(O(1)\)算, 这样我们就令\(g(x)=n^2(x), (f*g)(x)=n^3(x)\), 然后扔到上面的杜教筛通式里做就好啦~
复杂度可能是\(O(\sqrt n*n^{\frac 23})\)的, 不过这应该是最优的复杂度了..
代码应该不太好写, 懒得写了QAQ
【学术篇】luogu3768 简单的数学题(纯口胡无代码)的更多相关文章
- [Luogu3768]简单的数学题
题面戳我 题意:求 \[\sum_{i=1}^{n}\sum_{j=1}^{n}ij\gcd(i,j)\] \(n\le10^{10}\) sol \[ans=\sum_{d=1}^{n}d\sum_ ...
- Luogu3768简单的数学题
题目描述 题解 我们在一通化简上面的式子之后得到了这么个东西. 前面的可以除法分块做,后面的∑T2∑dµ(T/d)是积性函数,可以线性筛. 然后这个数据范围好像不太支持线性筛,所以考虑杜教筛. 后面那 ...
- [luogu3768] 简单的数学题 [杜教筛]
题面: 传送门 实际上就是求: 思路: 看到gcd就先反演一下,过程大概是这样: 明显的一步反演 这里设,S(x)等于1到x的和 然后把枚举d再枚举T变成先枚举T再枚举其约数d,变形: 后面其中两项展 ...
- iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...
- 【Luogu3768】简单的数学题(莫比乌斯反演,杜教筛)
[Luogu3768]简单的数学题(莫比乌斯反演,杜教筛) 题面 洛谷 \[求\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)\] $ n<=10^9$ 题解 很明显的把\( ...
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- iOS开发UI篇—Quartz2D简单介绍
iOS开发UI篇—Quartz2D简单介绍 一.什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\ ...
- 【转】 iOS开发数据库篇—SQLite简单介绍
开始学SQLite啦, 原文: http://www.cnblogs.com/wendingding/p/3868893.html iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
随机推荐
- 【原生】js实现表格的增删改查
说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操作. 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号.姓名.密码.生日. ...
- input输入框数字转带千分位的字符串
数字转带千分位的字符串 思路 先获取要转换的数字,对其进行分割 小数部分具体需要保留多少位,具体处理 整数部分用正则做替换 将小数部分和整数部分合计 代码 注意: 本文是基于 jQuery 写的,稍稍 ...
- python图像特征提取
这里使用的是python 3.5 .opencv_python-3.4.0+contrib,特征提取的代码如下: import cv2 img = cv2.imread("feature.j ...
- 域名访问和ip访问区别
域名访问和ip访问区别 ip访问对应某一台确定的服务器: 域名访问相当于在ip访问的基础上,做了一个反向代理的中间功能.例如:百度,很多人会同时使用,如果使用的是同一台服务器的话,服务器估计会扛不住, ...
- postgresql like 中的转义
select * from tb_org where char_length(xdm)>8 and xdm not like '%*_%' ESCAPE '*' ESCAPE 后面的 * 是转 ...
- Feign实现服务调用
上一篇博客我们使用ribbon+restTemplate实现负载均衡调用服务,接下来我们使用feign实现服务的调用,首先feign和ribbon的区别是什么呢? ribbon根据特定算法,从服务列表 ...
- 解决Addin开发不能断点调试的问题
ArcMap或CAD在调试C#二次开发的插件的时候,在一些情况下不能正常进入到断点中,原因是debugger type不对应. eg. 右键单击Solution Explorer,选择Add-> ...
- MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC
总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concur ...
- Angularjs 1.3在页面中输出带Html标记的文本
如何Angularjs1.3在页面中输出带Html标记的文本 基于安全考虑,Angularjs不允许用ng-bind或者{{}}的方法输出html文本. 在实际的应用中,比如信息管理系统,用在线编辑器 ...
- (转)深刻理解Linux进程间通信(IPC)
转:http://www.ibm.com/developerworks/cn/linux/l-ipc/index.html 序 linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来 ...