Dãy Fibonaci là dãy gồm các số: 1, 1, 2, 3, 5, 8, .... được xác định bởi công thức sau: F1=1, F2=1, Fi=Fi-1+Fi-2 với i>2. Em hãy biểu diễn một số tự nhiên N thành tổng của ít nhất các số Fibonaci khác nhau. Dữ liệu vào: cho file FIBO.INP chứa số N (N ≤ 2000000000) Dữ liệu ra: ghi ra file FIBO.OUT biểu diễn số N thành tổng của ít nhất các số Fibonaci khác nhau. Ví dụ: FIBO.INP FIBO.OUT 129 129 = 89 + 34 + 5 + 1 Hoặc FIBO.INP FIBO.OUT 8 8 = 8

2 câu trả lời

Program BTT;
Uses crt;
Var n,x,y,z: qword;
Begin
        Clrscr;
        Write('Nhap n: '); Readln(n);
        Repeat
                x:=1; y:=0;
                Repeat
                                z:=x+y;
                                x:=y;
                                y:=z;
                Until z>n;
                Write(x,' ');
                n:=n-x;
        Until n=0;
        Readln
End.

program b13;
uses crt;
var d,g:text;n:longint;a:array[1..1000]of longint;
procedure fibonaci;
var b,i,k:longint;
        begin
         a[1]:=1;
         a[1]:=1;
         for i:=3 to 46 do a[i]:=a[i-1]+a[i-2];
         assign(d,'FIBO.INP');
         reset(d);
         readln(d,n);
         assign(g,'FIBO.OUT');
         rewrite(g);
         writeln(g,n);
                  repeat
                   k:=1;
                   while a[k]<b do inc(k);
                   if a[k]>b then
                        begin
                         dec(k);
                         write(g,a[k]);
                         b:=b-a[k];
                        end;
                   if a[k]=b then
                        begin
                         write(g,a[k]);
                         b:=b-a[k];
                        end;
                   if b<>0 then write(g,'+');
                  until b=0;
        close(d);close(g);
       end;
begin
 clrscr;
  fibonaci;
  writeln('go enter va vao file output2.txt de xem kq');
 readln;
end.

Câu hỏi trong lớp Xem thêm