[闲聊] Euler 139

楼主: involution (内卷是好文明)   2023-08-31 03:47:08
https://projecteuler.net/problem=139
考虑直角三角形 (a, b, c)
用四个这样的三角形以斜边 c 当正方形的边
中间会有一个正方形的洞
https://projecteuler.net/resources/images/0139.png
有些可以用若干个这样大的洞拼成边长 c 的正方形
问有多少周长在 10^8 以下的直角三角形符合上面的性质

对直角三角形 (a, b, c) 且 a <= b <= c,中间的洞的长度是 b - a
假设令 d = b - a, 因为 d 要能整除 c, 令 c = kd
就会是 (a, a+d, kd),且有
a^2 + (a+d)^2 = (kd)^2
在模 d 底下,就有
a^2 + a^2 = 0
所以显然 d 可以整除 a,也就是所有边都是 d 的倍数
也就是所有符合条件的三角形都有 b - a = 1 的 base case 再等比例放大
考虑 (a, a+1, c),有
a^2 + (a+1)^2 = c^2
<=> 2a^2 + 2a + 1 - c^2 = 0
<=> (2a+1)^2 - 2c^2 = -1
又可以像前两题一样套用 negative Pell's equation
确定 a 能是整数即可,之后再等比例放大
例如 2a+1+c = s, 那相似的三角形就有 floor((10^8-1) / s) 个

Links booklink

Contact Us: admin [ a t ] ucptt.com