138. 特殊等腰三角形(Special isosceles triangles)
考虑底为\(b = 16\),腰为\(L = 17\)的等腰三角形:
使用毕达哥拉斯定理,我们可以求出三角形的高是\(h=\sqrt{17^2-8^2}=15\),恰好比底长小一。当\(b = 272\)而\(L = 305\)时,可得\(h = 273\),恰好比底长大一,这是满足性质\(h = b ± 1\)的三角形中第二小的。
对于最小的\(12\)个满足\(h = b ± 1\)且\(b,L\)均为正整数的等腰三角形,求\(\sum{L}\)。
分析:又一个佩尔方程相关的问题,看来欧拉计划的出题者对佩尔方程真是非常喜爱。回忆一下,我们在第六十六题中第一次接触了佩尔方程,学习了如何使用连分数展开来求解佩尔方程的基本解;在第九十四题中我们通过对原方程进行配方变换,将普遍的二元二次不定方程变换为佩尔方程并求解;然后在第一百题中接触了负佩尔方程,并利用解之间的递归关系来求解满足特定要求的正整数解。这道题所需要的知识与技巧之前基本都已经涉及过了,这道题只需要依葫芦画瓢即可,首先根据题意列出三角形各边关系的方程:
在上式左右两边同时乘以\(20\)并移项:
在上式两边同时加上\(16\)并配方:
在上式两侧同时除以\(4\),则有:
令\(x=\left(\frac{5b\pm 4}{2}\right),y=L\),则有:
即为我们在第一百题中已经接触过的负佩尔方程。因此,我们只需要解出这个佩尔方程,得到相应的正整数解\(x,y\),再代回原式就可以找到相应的\(b,L\),即:
从上式可以看出,\(x\)为正整数并不能保证\(b\)为正整数,所以我们在求解\(b,L\)的正整数解时需要注意逐一验证。
容易发现\(x_1=2,y_1=1\)是方程\(x^2-5y^2=-1\)最小正整数解,则根据负佩尔方程解之间的递推关系可得:
因此我们可以得到递推关系:
使用以上递推关系,可以找到这个佩尔方程的无穷多组正整数解,如将\((x_1=2,y_1=1)\)代入,则有\(x_2=38,y_2=17\),从而可以得到\(b_1=(2*38+4)/5=16,L_1=17\),正是题目中给出的第一组正整数解。同理我们将\((38,17)\)代入递推式得到\(x_3=682,y_3=305\),从而得到第二组正整数解为\(b_2=(2*382-4)/5=272,L_2=305\)正是题目中给出的第二组解。如上所述可以找到原方程的前十二个正整数解,如下:
计算他们的总和,即为题目所求。代码如下:
# time cost = 6.96 µs ± 23.6 ns
def main(N=12):
n,res = 0,0
x,y = 38,17
while n < N:
b1,b2 = 2*x+4,2*x-4
if b1%5 == 0 or b2%5==0:
res += y
n += 1
x,y = 9*x+20*y,4*x+9*y
return res
