1. 程式人生 > >SSL2280 極值問題(遞推,斐波那契)

SSL2280 極值問題(遞推,斐波那契)

極值問題

Description

已知m、n為整數,且滿足下列兩個條件:
(1)m、n∈1,2,3,……,k
(2)(n^2-mn-m^2)^2=1
對給定的k,求m^2+n^2的最大值
Sample Input
1995
Sample Output
m=987
n=1597

分析:求斐波那契數列中小於k的最大項。

程式碼

var
  n,m,x,k:longint;

begin
  readln(k);
  m:=2;n:=3;x:=5;
  if k<3 then
    begin
      writeln('m=1');
      writeln('n=1'
); end else if k<5 then begin writeln('m=2'); writeln('n=3'); end else begin while m+n<=k do begin m:=n; n:=x; x:=m+n; end; writeln('m=',m); writeln('n=',n); end; end.