本题是前100题中较难的题。若$a$是近等边三角形的腰长,$b=a\pm1$是其底长,并记$q=(2a+b)/2$,则由海伦公式可得该三角形的面积是
$$s=\sqrt{q(q-a)(q-a)(q-b)}=(q-a)\sqrt{q(q-b)}=\frac{q-a}{2}\sqrt{(2a)^2-b^2}=\frac{b}{4}\sqrt{(2a)^2-b^2}=\frac{bc}{4}.$$
其中
$$c^2=(2a)^2-b^2.$$
若$a$是偶数,则$b,c$都将是奇数,从而$s$无法为整数。因此$a$必须是奇数,此时$b,c$是偶数,令$c=2d$,则有
$$4d^2=4a^2-b^2.$$
代入$b=a\pm1$得
$$4d^2=3a^2\mp2a-1.$$
将上式看作关于$a$的二次方程可解得
$$a=\frac{\pm1+2\sqrt{1+3d^2}}{3}.$$
因此$3d^2+1$需为平方数。设$q^2=1+3d^2$,则$(q,d)$是Pell方程
$$q^2-3d^2=1,$$
的一组解。该方程的基本解是$q_1=2, d_1=1$,其他正整数解可由
$$\begin{cases}q_k=q_{k-1}q_1+3d_{k-1}d_1=2q_{k-1}+3d_{k-1}, \\ d_k=q_{k-1}d_1+d_{k-1}q_1=q_{k-1}+2d_{k-1}, \end{cases}$$
递推计算。此外
$$a=\frac{2q\pm1}{3},$$
因此$q$模$3$还需要分别为$\pm1$。综合上述分析并计算可得结果$518408346$。
q,d,s=2,1,0
while d <= 166666666:
if q%3==1:s=s+2*q+2
if q%3==2:s=s+2*q-2
q,d=q*2+3*d,q+2*d
print s-2 # if q=2, then a=1,b=0, which does not form a triangle
|