1000]OF LONGINT; K,I,N,M,H

Bài 2:

uses crt;

var a:array[1..1000]of longint;

k,i,n,m,h:longint;

function fbnx(k:longint):boolean;

var i:longint;

f:array[1..100]of longint;

begin

f[1]:=1;

f[2]:=1;

i:=3;

repeat

f[i]:=f[i-1]+f[i-2];

inc(i);

until f[i-1]>=k;

fbnx:=(f[i-1]=k);

end;

BEGIN

clrscr;

write('Nhap n=');readln(n);

if (n=0) or(n=1) then begin write('KHONG THE PHAN TICH.');readln;exit;end;

if (n=2) then begin write('KHONG THE PHAN TICH.');readln;exit;end;

m:=n;

k:=0;

if not fbnx(n) then

begin

repeat

for i:=n downto 1 do

if fbnx(i) then begin inc(k);a[k]:=i;n:=n-i;break;end;

until (n=0)or (n=1);

write('',m,'=');

if n=0 then

begin

for i:=1 to k-1 do write('',a[i],'+');

write(a[k]);

if n=1 then

for i:=1 to k-1 do write('',a[i],'+');

write('',a[k],'+1');

end

else

write('',n,'=');

h:=0;

for i:=n-1 downto 1 do

if fbnx(i) then begin h:=i;write('',i,'+');break;end;

write(n-h);

readln

end.