Nguồn bài http://vn.spoj.com/problems/LATGACH4/
Nội dung bài viết
Đề bài LATGACH4 spoj
Cho một hình chữ nhật kích thước 2xN (1<=N<10^9). 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 lấy phần dư cho 111539786.
Example
Input:
3
1
2
3
Output:
1
2
3
Code tham khảo LATGACH4 spoj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | const fi=''; sodu = 111539786; nmax = 1000000; var f:text; A:array[0..nmax] of longint; T,ti:word; i,tam:longint; function fibo(n:int64):int64; var k1,k2:int64; begin if n<=nmax then exit(a[n] mod sodu); if n mod 2 = 0 then begin k1:=fibo(n div 2) mod sodu; k2:=fibo(n div 2 - 1) mod sodu; fibo:=(((k1*k1) mod sodu )+ ((k2*k2) mod sodu)) mod sodu; end else fibo:= (fibo(n div 2)*((fibo(n div 2 + 1) + fibo(n div 2 - 1)) mod sodu)) mod sodu; end; begin A[1]:=1; a[2]:=2; for i:=3 to nmax do a[i]:=(a[i-1]+a[i-2]) mod sodu; assign(f,fi); reset(f); readln(f,t); for ti:=1 to t do begin readln(f,tam); writeln(fibo(tam)); end; close(f); end. |
Bài viết liên quan
- ACM2016_North_G – Optimal division (ACM 2016 Miền Bắc)
- MPILOT spoj – Pilots
- Đếm số Palindrome
- LNACS spoj – Dãy con chung không liền kề dài nhất
- STMERGE spoj – VOI 2013 – Trộn xâu
- P157PROE spoj PTIT – ROUND 7E – Kim cương
- BCROBOT spoj PTIT – Đường đi rô-bốt
- NKCABLE Spoj – Nối mạng
- QBSELECT Spoj – VOI06 Chọn ô
- QBMAX spoj – Đường đi có tổng lớn nhất