Project Euler 口胡记录

Link 1

Link 2

Link 3

Link 4

Link 5

看不懂

261

319

465

367
492
251
276

394
503
360
245

388
513
273
447

302
518
379
508

369
550
499

Solutions

题号标 x 的需要 看证明 / 重新思考 / 写代码

Problem 110 Diophantine reciprocals II

在如下方程中,,均为正整数(其中 )

不同的解的总数超过四百万种的最小 值是多少?

Solution

此题有一个优美的结论:此方程组的解数为

proof

考虑 是整数,又由于

,得到 。那么令 , 就是 的一个约数,易得这是一个充要条件

令 ,注意到 ,那么最优解一定有 ,以此作为剪枝即可。

参考资料

Problem 233x Lattice points on a circle

作过点 、、 和 的圆,记圆周上坐标为整数的点的数目为 。

有些正整数 且 ,这些正整数的和是多少?

Solution

考虑到 需要表示为两个数的平方和。这里有 费马平方和定理

一个奇质数能表示为两个数的平方和的充要条件是

根据经典恒等式 ,可以得到:这种质数的乘积也能表示为两个平方数的和。
分解 后讨论,最后转化为一个线性筛DP(考虑每个这种质数的指数)

参考资料

Note 事实上,任意一个素数都能 唯一的 表示为两个数的平方和。这是因为 高斯整数环 是一个欧氏环,满足唯一分解性,具体参见高代书的内容

Problem 271 Modular Cubes, part 1

对于正整数 ,存在整数 ,满足 ,且 。记所有这样的整数 的和为 。

求 。

Solution

注意到将模数分解后,每个质因子独立(这些质因子都很小),于是求出每一个质因子下的三次剩余,暴力 CRT 合并即可

Problem 272x Modular Cubes, part 2

对于正整数 ,存在整数 ,满足 ,且 。记所有这样的整数 数目为 。

对于所有使得 的正整数 ,求它们的和。

Solution

考虑三次剩余的性质,并注意到 (实际上一定是3的幂次)

三次剩余的性质:

参考资料 1

参考资料 2

参考资料 3

Problem 292 Pythagorean Polygons

我们定义 毕达哥拉斯多边形 为满足下列性质的凸多边形

  • 有至少三个顶点,
  • 不存在三个顶点共线,
  • 每个顶点坐标均为整数
  • 每条边长度均为整数

对于给定的整数 ,记 为边长 的不同毕达哥拉斯多边形的数目。
只要不能将其中一个通过平移得到另一个,就被认为是不同的毕达哥拉斯多边形。

求 。

Solution

显然可以得到一个DP做法,利用毕达哥拉斯三元组转移。

注意到条件 不存在三个顶点共线,于是考虑 本原 毕达哥拉斯三元组,所有三元组都可以由这个东西生成,于是用这个东西转移即可,由于斜率的单调性,可以前缀和优化一下

Problem 295 Lenticular holes

若两圆重叠而成的凸区域满足以下条件,我们称之为 透镜孔洞

  • 两圆的中心都是格点。
  • 两圆在两个格点处相交。
  • 两圆重叠而成的凸区域内部不包含任何格点。

如果存在两个半径分别为 和 的圆能够生成透镜孔洞,我们就称有序正实数对 为透镜数对

记 是所有满足 的 不同 透镜数对的数目。

求 。

Solution

通过 不等式 得到了长度的上界。考虑其中垂线,根据限制,是一段区间, 即可

Problem 341 The Mouse on the Moon

考虑一个 的网格,中心有一个半径为 的网格,要求选择一个多边形,与圆不相交(可以相切),并且顶点都在整点上,求包围面积与周长的最大比值。

[站外图片上传中...(image-71e329-1535885869188)]

Solution

分数规划好题!

二分答案,观察到一条边的贡献,可以由叉积减去答案乘长度得到,利用凸多边形的性质,按照 排序,DP 即可

Problem 362x Squarefree factors

我们记 是将 分解为一个或多个大于 的无平方因子因数乘积的方式数。

记 为 。求 。

Solution

首先线性筛出无平方因子数,考虑暴力DP, 考虑 中,用不超过 无平方因子数表出的个数。
然而这样暴力大概是 的。

注意到我们只需要考虑到根号级别的质数(因为大于根号的至多只有一个),其他的前缀和算一算,复杂度就是 的了

Problem 373 Circumscribed Circles

每个三角形都有一个经过三个顶点的外接圆。考虑所有外接圆半径也是整数的整数边长三角形。

取其中外接圆半径不超过 的三角形,记它们的外接圆半径之和为 。

求 。

Solution

通过××可以发现,一个结论:这种三角形的三边,一定是毕达哥拉斯三元组的直角边。

proof

考虑一个三角形 ,他的圆心为 。考虑作过 的直径 ,连 。

根据托勒密定理,有:

于是根号下的东西是完全平方数。

由于小于 的毕达哥拉斯三元组是 级别的,所以暴力生成三元组,枚举半径,,求出 ,即可。

Note 似乎存在规律:两个 ,如果它们的分解当中 素数的指数分布相同,它们的答案相同。(如何证明?)

Problem 416 A frog’s trip

在一列 个方块的最左边一个上有一只青蛙。青蛙通过连续不断的跳跃,先跳到最右边的方块,然后再跳回最左边的方块。它向右跳的时候每次可以跳一个、两个或三个方块,跳回来时也同理。它不能跳出这些方块。这样的往返它一共进行了 次。

记 为青蛙在旅途中至多有一个方块从未被跳到过的方式总数。

求 的最后 位数字。

Solution

把从右向左跳的青蛙反转方向,所有 只一起考虑,可以矩阵快速幂解决。

状态只需维护两个位置的青蛙数量,剩下一个可以直接得到。

Hardest

Problem 446 Retractions B*

对于任意整数 ,函数族 按如下方式定义:,其中 都是整数,且 。

我们称 为撤销函数,当 均有在模 意义下 。

记 是给定 下撤销函数的数目。记 ,其中。

Solution

首先可以证明一个结论:

proof

考虑 等价于 。

令 分别等于 ,容易得到 并且 ,显而易见,这是个充分必要条件。

令 ,那么有 存在 种取值( 是 的倍数),并且 。

注意到 ,根据扩欧,容易得到:当且仅当 时,存在解 ,并且解唯一(同时存在 种解 )

于是有

回到原问题。一个重要的事实是 ,于是我们只需要考虑形如 数的答案。

还有一个亟待解决的问题是 与 之间的公因子。

显然当 为偶数时,会存在公因子 ,而没有公因子 。

又 ,考虑 大于 的因子 ,则必定有 。

因而 为偶数时, 为 ,否则 为 。

接下来,我们考虑使用筛法来求出所有的 。在这里,推荐 ZhouYuChen 的高效筛法,复杂度可以做到 (由于去除的质因子非常大,所以实际非常不满)。

注意到 ,在模 意义下至多存在两个解 ,逐个去筛 即可。但是,如何说明处理到第 个数时,剩下的 为质数?

proof

假设当前去筛的数为 ,任取两个质因子 。

需要说明的是, 不存在平方因子。因为 ,而显然 不被任何质数的平方整除。可以得到

于是有

注意到,此时必定有 ,也即

假设

可以得到 ,根据 ,那么有 。得到 ,与上述式子矛盾!

于是就解决了整个问题。

你可能感兴趣的:(Project Euler 口胡记录)