VIJOS P1543极值问题

已知m、n为整数,且满足下列两个条件:
① m、n∈1,2,…,K
② (n^ 2-mn-m^2)^2=1
编一程序,对给定K,求一组满足上述两个条件的m、n,并且使m^2+n^2的值最大。例如,若K=1995,则m=987,n=1597,则m、n满足条件,且可使m^2+n^2的值最大。

题解:

证明一下不是相邻fib的数不能成为该方程的解,也就不会干扰答案。利用反证法

 若 x,y满足题意  ,则gcd(x,y)=1 (从式子中可以明显看出来)
 若x==y  则 x=y=+-1 
若 x>y 设 x=y+z 则 (y+z,y)满足题意,易推出 (y,z)满足题意,
这样一直下去 正好是辗转相减的过程!(gcd(x,y)=gcd(y,x-y))
所以最后一定会推出 (x,1)满足题意
显然x!=1并且 x!=2
因为 由这样推出的符合题意的都是fib中连续的两项,而我们已经假设 x,y不是这样的数!
而如果 n=1,则解出 m=-2,-1,0,1;
         m=1,解出n=-1,0,1,2
而 x>0 显然不会有其他解,所以矛盾。
posted @ 2014-10-07 11:38  ZYF-ZYF  Views(235)  Comments(0Edit  收藏  举报