Bài tập Pascal, cần giúp đỡ

Trần Đức Trung
(Tonghophoa)

New Member
Mọi người có ai giỏi lập trình thì giải giúp em bài này với. Xin lỗi vì đề bài hơi dài lại bằng tiếng Anh.


You are given a set of 2n dominos, where n < 1000 is an integer. The dominos have width 1 and length 2. It is possible to arrange these dominos in such a way that they form a 4 × n rectangle. For instance, in Figure 1, we have arranged 12 dominos to form a 4 × 6 rectangle.




In fact, where n > 1, there are several ways of arranging dominos to form a 4 × n rectangle. For instance, in Figure 2, you can see the 5 different ways of forming a 4 × 2 rectangle:


Figure 2: The 5 different ways of forming a 4 × 2 rectangle.

We denote by Rn the number of different ways of forming a 4 × n rectangle with 2n dominos. For instance, R2 = 5, as you can see in Figure 2. As Rn can be quite large, even for small values of n, you are only asked to compute the last three digits of Rn. Your program should output the value of the last three digits of Rn without leading zeros. For instance, R17 = 26915305, so when n = 17, your program should output 305 (the last three digits). Another example, R2 = 5 (or 005), so when n = 2, your program should output 5. Should the last three digits be zeros for some Rn, your program should simply output 0.

Input
The file DOMINO.IN contains the integer n. Remember that n < 1000.

Output
You should write an integer giving the value of the last three digits of Rn without leading zeros in the output file DOMINO.OUT. (Note that the output value is simply the value Rn mod 1000; that is, the remainder of Rn divided by 1000.)

Input/Output Examples
For the example R2 = 5, the input and output files contain

Sample input 1
2
Sample output 1
5
For the example R17 = 26915305, the input and output files contain

Sample input 2
17
Sample output 2
305

Xin lỗi mọi người vì không đưa được mấy cái hình ví dụ lên. Em sẽ cố đưa lên sau. Bài này trích từ đề Olympic tin học của Sing, 2004. Giới hạn thời gian là 5 giây.
 
Chỉnh sửa lần cuối:
chú có thể trích image của nó lên hoặc đưa link trực tiếp đến chỗ đề bài đc ko, bài này có những giới hạn nào nữa ko, kiểu như bộ nhớ, kích thước test...
 
Link của bài đấy đây ạ : http://www.comp.nus.edu.sg/~noi/tasks2004.html
Bài số 3 đấy ạ.
Về bộ nhớ thì chương trình được viết trong free pascal nên không có giới hạn, còn kích thước test thì em nhớ là đã nêu rõ trong đề bài, n<1000.
Bây giờ để em dịch đề bài ra :
Cho 2n quân đô-mi-nô, n là một số nguyên <1000. Mỗi quân đô-mi-nô có kích thước 2x1. Có thể sắp xếp các quân sao cho chúng tạo thành một hình chữ nhật 4xn. Nếu n>1 sẽ có nhiều cách sắp xếp các quân thành hình chữ nhật 4xn. Ví dụ, sẽ có 5 cách tạo thành một hình chữ nhật 4x2 (không có hình em sẽ cố đưa lên sau). Ta kí hiệu Rn là số cách khác nhau để tạo thành một HCN 4xn với 2n quân đô-mi-nô. Ví dụ: R2=5. Vì Rn có thể rất lớn, bạn chỉ phải tính 3 chữ số cuối của Rn. Chương trình của bạn sẽ phải in ra 3 chữ số cuối của Rn mà không có chữ số 0 ở đầu. Ví dụ R17=26915305, vậy, khi n=17 chương trình của bạn sẽ phải in ra 305 (3 chữ số cuối). Một ví dụ nữa, R2=5, vậy khi n=2, chương trình của bạn sẽ in ra 5. Nếu 3 chữ số cuối của một số Rn là 000, chương trình của bạn chỉ cần in ra 0.

Input
File DOMINO.in có một số n duy nhất. n<1000
Output
In ra một số nguyên chứa giá trị của 3 chữ số cuổi của R, không có chữ số 0 ở đầu.

Ví dụ 1
input file
2
output file
5
Ví dụ 2
input file
17
output file
305
 
Trao đổi tí nhỉ, liệu em có thể tìm được công thức tính Rn với mọi n ko, nếu tím được thì coi như xong nhé. Nếu ko tìm được thì chắc fai tính cách biểu diễn 2n domino này trong 1 solution (nhị phân chẳng hạn) rồi tính giá trị nhị phân của nó. Đang nghĩ tiếp...
 
Hơ sao chuyên Hóa lại học Tin :))

Bài này qui hoạch động trạng thái :))

Có cả tính số lớn :D Hehe nói chung để làm hoàn chỉnh bài này không dễ :D
 
Chỉnh sửa lần cuối:
Nguyễn Khánh dạo này giọng giảng bài như Hải Minh, kính phục, kính phục. Có điều nghĩ mãi mà ko ra phương trình quy hoạch động, còn phần xử lí số lớn thì không khó
 
Chỉnh sửa lần cuối:
Thôi, bài này chịu rồi. Quy hoạch động mình học ngu như gì.
Hồi xưa có mỗi một bài quy hoạch động đơn giản cũng không làm được.
Giải bài đấy bằng đệ quy, vừa thiếu nghiệm, vừa chậm.
Chúng nó giải quy hoạch động mất 1s, mình mất 10s.
 
Thế em hỏi, có chuyển từ lớp Toán xuống lớp Tin đc. 0 ạ, chuyển thi` như thế ni, xin ai, cho em bít nhé, thanks lun :x :x
 
To anh Thành : Em tìm công thức cả ngày không xong.
Anh Khánh gì đấy giải được thì giải thích hộ em với, anh gợi ý mỗi một câu kiểu đấy khó quá.
 
Thế này nhé :D

l[i,j] la số cách xếp đến cột thứ i và co trạng thái là j

Vì la hcn 4*n nên là với mỗi 1 cột có 2^4 trạng thái :D

Cứ duyệt các trạng thái của ô i-1 cập nhật cho ô i

Độ phức tạp là n*2^4
 
Back
Bên trên