Dãy Tribonacci

Dãy Tribonacci là dãy 1 , 1 , 2 , 3 , 7 , 13 , 24... dãy này được sinh ra bới công thức đệ qui sau :
Tr(1) = 1 , Tr(2) = 1 , Tr(3) = 2 , Tr(k) = Tr(k-1)+Tr(k-2)+Tr(k-3) ... với 3< k <37
Mọi số tự nhiên N đều có thể biểu diễn duy nhất dưới dạng tổng của một số số trong dãy Tribonacci.
VD: 17 = 13 + 4; 30 = 24 + 4 + 2;
Cho trước số tự nhiên N nhập từ bàn phím. Viết chương trình tìm biểu diễn Tribonacci của số N.

Ý tưởng: Xây dựng 1 mảng số Tribonacci từ 1 tới 37 (đến 37 vì theo đề bài ...), rồi duyệt từng phần tử của dãy Tribonacci, nếu n> Tribonacci[i] thì in ra Tribonacci[i] và giảm n tới khi n<0 thì thôi.

Uses crt;
Const
  max=37;
Var
  a:array[1..max] of longint;
  n,i:longint;
BEGIN
  Clrscr;
  a[1]:=1; a[2]:=1; a[3]:=2;
  For i:=4 to max do
    a[i]:=a[i-1]+a[i-2]+a[i-3];
  Write('Nhap so n:'); readln(n);
  i:=max;
  While a[i]>n do i:=i-1;
  Write(n,'=',a[i]);
  n:=n-a[i];
  While n>0 do
    Begin
      i:=i-1;
      If n>=a[i] then
        Begin
          Write('+',a[i]);
          n:=n-a[i];
        End;
    End;
  Readln;
END.

Không có nhận xét nào:

Đăng nhận xét