lời giải LATGACH spoj – Lát gạch

Nguồn đề bài http://vn.spoj.com/problems/LATGACH/

1. Đề bài LATGACH spoj

Cho một hình chữ nhật kích thước 2xN (1<=N<=100). Hãy đếm số cách lát các viên gạch nhỏ kích thước 1×2 và 2×1 vào hình trên sao cho không có phần nào của các viên gạch nhỏ thừa ra ngoài, cũng không có vùng diện tích nào của hình chữ nhật không được lát.

Input

Gồm nhiều test, dòng đầu ghi số lượng test T ( T<=100 ).
T dòng sau mỗi dòng ghi một số N.

Output

Ghi ra T dòng là số cách lát tương ứng.

Example

Input:
3
1
2
3

Output:
1
2
3

2. Hướng dẫn LATGACH spoj

thực chất đây là bây toán Fibonacci. F[i]:=F[i-1]+F[i-2]. việc còn lại là xử lí số lớn.

3. Code tham khảo LATGACH spoj

const   fi='';
var
        f:text;
        T:byte;
        A:array[0..100] of ansistring;


function cong(a,b:ansistring):ansistring;
var     c:ansistring;
        i,du,carry:word;
begin
        while length(a)<length(b) do
                a:='0'+a;
        while length(b)<length(a) do
                b:='0'+b;

        du:=0; c:='';
        for i:=length(a) downto 1 do
                begin
                        carry:=ord(a[i])+ord(b[i])-48*2+du;
                        if carry>9 then
                                begin
                                        du:=1;
                                        carry:=carry-10;
                                end
                        else
                                du:=0;
                        c:=chr(carry+48) + c;
                end;
        if du=1 then c:='1'+c;
        exit(c);
end;

procedure fibo;
var     i:byte;
begin
        a[0]:='1';
        a[1]:='1';
        for i:=2 to 100 do
                a[i]:=cong(a[i-1],a[i-2]);
end;

begin
        assign(f,fi); reset(f);
        readln(f,t);
        fibo;
        while not eof(f) do
                begin
                        readln(f,t);
                        writeln(a[t]);
                end;
        close(f);
end.

 

4 thoughts on “lời giải LATGACH spoj – Lát gạch

  1. Viết chương trình nhập vào 1 số nguyên lớn N. Hãy tách số nguyên lớn này thành nhiều số con theo thứ tự tăng dần.
    vd: 15478245
    tách thành 1 5 47 8245
    vd: 10487529
    tách thành 10 48 7592
    vd: 17024589
    tách thành 1 70 24589

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *