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)满足题意
这样一直下去 正好是辗转相减的过程!(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 显然不会有其他解,所以矛盾。