ProjectEuler_做题记录

简单记录一下。

problem 441 The inverse summation of coprime couples

神仙题。考虑答案为:
\[\begin{array}{c}
S(n) & = & \sum_{i = 1} ^ n \sum_{p = 1} ^ i \sum_{q = p + 1} ^ i \frac {1}{pq}[p + q \geq i][gcd(p, q) = 1] \\
& = & \sum_{i = 1} ^ n \sum_{p = 1} ^ i \sum_{q = p + 1} ^ i \frac {1}{pq}[p + q \geq i] \sum_{d|gcd(p, q)} \mu(d) \\
& = & \sum_{i = 1} ^ n \sum_{d = 1} ^ n \mu(d) \sum_{p = 1} ^ {\lfloor i/d \rfloor} \sum_{q = 1} ^ {\lfloor i/d \rfloor} \frac {1}{pqd ^ 2}[pd + qd \geq i]\\
& = & \sum_{i = 1} ^ n \sum_{d = 1} ^ n \frac {\mu(d)}{d ^ 2} \sum_{p = 1} ^ {\lfloor i/d \rfloor} \sum_{q = 1} ^ {\lfloor i/d \rfloor} \frac {1}{pq}[p + q \geq \lfloor i/d \rfloor] \\ & - & \frac {1}{pq}[p + q = \lfloor i/d \rfloor][i \ mod \ d = 0] \\
\end{array}\]
我们考虑构造三个函数:
\[\begin{array}{c}
F(n) & = & \sum_{i = 1} ^ n \frac {1}{i} \\
G(n) & = & \sum_{i = 1} ^ n \sum_{j = i + 1} ^ n \frac {1}{ij} [i + j = n] \\
T(n) & = & \sum_{i = 1} ^ n \sum_{j = i + 1} ^ n \frac {1}{ij} [i + j \geq n] \\
\end{array}\]
事实上,我们可以解出这三个函数的递归式,然后做到\(O(N)\)预处理。
然后最后的式子会变成:
\[S(n) = \sum_{d = 1} ^ n \frac {\mu(d)}{d ^ 2} \sum_{i = d} ^ n(T(\lfloor i/d \rfloor) - G(\lfloor i/d \rfloor)[i \ mod \ d \neq 0])
\]
然后就可以根据调和级数做到\(O(n \ lnn)\)。

problem 530 GCD of Divisors

由于直接化简比较困难,考虑将整个答案一起化简:
\[\begin{array}{c}
ans & = & \sum_{i = 1} ^ n \sum_{d \mid i} gcd(d, \frac {i}{d}) \\
& = & \sum_{g = 1} ^ n g \sum_{i = 1} ^ {n} \sum_{d \mid i} [gcd(d, \frac {i}{d}) = g](先枚举gcd的套路)\\
& = & \sum_{g = 1} ^ n g \sum_{i = 1} ^ {\lfloor n/g^2 \rfloor} \sum_{d \mid i} [gcd(d, \frac {i}{d}) = 1](设i = \frac {i}{g ^ 2}, d = \frac {d}{g})\\
& = & \sum_{g = 1} ^ n g \sum_{i = 1} ^ {\lfloor n/g^2 \rfloor} \sum_{d \mid i} \sum_{t \mid gcd(d, \frac {i}{d})} \mu(t) \\
& = & \sum_{g = 1} ^ n g \sum_{t = 1} ^ n \mu(t) \sum_{i = 1} ^ {\lfloor n/(gt) ^ 2 \rfloor} \sum_{d \mid i} 1 (设i = \frac {i}{t ^ 2}, d = \frac {d}{t},也是套路)\\
& = & \sum_{g = 1} ^ n g \sum_{t = 1} ^ n \mu(t) \sum_{i = 1} ^ {\lfloor n/(gt) ^ 2 \rfloor} \sigma_0(i)(\sigma_0(i)表示i的因子个数)\\
&!&(下一步是个新套路,构造\phi的卷积形式\phi = \mu * 1) \\
& = & \sum_{k = 1} ^ {\sqrt n} \sum_{g \mid k} g\mu(\frac {k}{g}) \sum_{i = 1} ^ {\lfloor n/k ^ 2 \rfloor} \sigma_0(i)(k = gt,注意k的取值只需要到\sqrt n)\\
& = & \sum_{k = 1} ^ {\sqrt n} \phi(k) \sum_{i = 1} ^ {\lfloor n/k ^ 2 \rfloor} \sigma_0(i)\\
&!& (最后套用\sum_{i = 1} ^ {m} \sigma_0(i) = \sum_{i = 1} ^ m \lfloor \frac {m}{i} \rfloor)\\
& = & \sum_{k = 1} ^ {\sqrt n} \phi(k) \sum_{i = 1} ^ {\lfloor n/k ^ 2 \rfloor} \lfloor \frac {\lfloor n/k ^ 2 \rfloor}{i} \rfloor \\
\end{array}\]
对后面部分使用除法分块,复杂度就是\(\sum_{i = 1} ^ {\sqrt n} O(\sqrt \frac {n}{i ^ 2}) = \sum_{i = 1} ^ {\sqrt n} O(\frac {\sqrt n}{i}) = O(\sqrt n \ ln \sqrt n)\)

project euler做题记录的更多相关文章

  1. UOJ 做题记录

    UOJ 做题记录 其实我这么弱> >根本不会做题呢> > #21. [UR #1]缩进优化 其实想想还是一道非常丝播的题目呢> > 直接对于每个缩进长度统计一遍就好 ...

  2. Sam做题记录

    Sam做题记录 Hihocoder 后缀自动机二·重复旋律5 求一个串中本质不同的子串数 显然,答案是 \(\sum len[i]-len[fa[i]]\) Hihocoder 后缀自动机三·重复旋律 ...

  3. 退役IV次后做题记录

    退役IV次后做题记录 我啥都不会了.... AGC023 D 如果所有的楼房都在\(S\)同一边可以直接得出答案. 否则考虑最左最右两边的票数,如果左边>=右边,那么最右边会投给左边,因为就算车 ...

  4. 退役III次后做题记录(扯淡)

    退役III次后做题记录(扯淡) CF607E Cross Sum 计算几何屎题 直接二分一下,算出每条线的位置然后算 注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px flag:计 ...

  5. 退役II次后做题记录

    退役II次后做题记录 感觉没啥好更的,咕. atcoder1219 历史研究 回滚莫队. [六省联考2017]组合数问题 我是傻逼 按照组合意义等价于\(nk\)个物品,选的物品\(\mod k\) ...

  6. BJOI做题记录

    BJOI做题记录 终于想起还要做一下历年省选题了2333 然而咕了的还是比做了的多2333 LOJ #2178. 「BJOI2017」机动训练 咕了. LOJ #2179. 「BJOI2017」树的难 ...

  7. FJOI2017前做题记录

    FJOI2017前做题记录 2017-04-15 [ZJOI2017] 树状数组 问题转化后,变成区间随机将一个数异或一,询问两个位置的值相等的概率.(注意特判询问有一个区间的左端点为1的情况,因为题 ...

  8. [日记&做题记录]-Noip2016提高组复赛 倒数十天

    写这篇博客的时候有点激动 为了让自己不颓 还是写写日记 存存模板 Nov.8 2016 今天早上买了两个蛋挞 吃了一个 然后就做数论(前天晚上还是想放弃数论 但是昨天被数论虐了 woc noip模拟赛 ...

  9. Project Euler 第一题效率分析

    Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...

随机推荐

  1. WinForm窗体权限控制的简单实现

    一.建立两张表 //存放要控制的窗体控件 CREATE TABLE [dbo].[AuthControl] ( [Id] INT IDENTITY (1, 1) NOT NULL, [NiceName ...

  2. vxworks开发中simulator的使用之建立虚拟网卡

    在使用windriver workben ch开发vxWorks应用时,有时需要在本机上利用Simulator跑一下程序,这就需要你安装一个虚拟的网卡.vxWorks自带了这些工具,下面,以windo ...

  3. shell实现大批量word转码然后分析相关字段

    需求 需要从服务器中的所有附件(2013-2019) 共60G查找相关字段 在linux上面直接打开doc等是乱码的 思路 先全部附件转码为txt, 然后用grep遍历查找字段实现 转码shell # ...

  4. mysql基操

    创建数据表: create table tt1( id int, name varchar(20), age int,sex boolean ); insert into tt1 values(1,& ...

  5. Bytom Kit开发辅助工具介绍

    Bytom Kit是一款为了帮助开发者更简单地理解Bytom的开发辅助工具,集合了校验.标注.解码.测试水龙头等功能. 该工具用python语言封装了一套比原的API和7个工具方法,如果有开发需求可以 ...

  6. 【Git】Git使用记录: remove *.lock eg: index.lock/head.lock

    问题 Another git process seems to be running in this repository, e.g. an editor opened by 'git commit' ...

  7. Servlet使用注解配置URl提示404错误

    刚接触servlet 3.0,使用注释描述servlet @WebServlet(name="FirstServlet", urlPatterns="/FirstServ ...

  8. Valse2019笔记——弱监督视觉理解

    程明明(南开大学):面向开放环境的自适应视觉感知 (图片来自valse2019程明明老师ppt) 面向识别与理解的神经网络共性技术 深度神经网络通用架构 -- VggNet(ICLR'15).ResN ...

  9. ASP.NET MVC 访问静态文件

    When use asp.net MVC, we can add a special route to access the image files. the code like below: 1. ...

  10. android 百度地图 定位获取位置失败 62错误

    一切正常步骤进行但是还是没有获得定位,得到的坐标总是49E.xxxx,错误代码总是62 总是以为代码.或jar包.或还有什么权限没给.搞了好久,十分郁闷.在控制台上又没有什么具体的错误提示 经过无数次 ...