Lý lịch
Bằng cách mở rộng và hủy các điều khoản, thật dễ dàng để hiển thị danh tính sau:
Tuy nhiên, vấn đề mở là liệu tất cả các hình chữ nhật 1 / n-by-1 / (n + 1) có thể xếp hình vuông đơn vị hay không.
Nhiệm vụ
Chương trình của bạn nên lấy số nguyên dương N làm đầu vào theo bất kỳ cách thuận tiện nào và đóng gói tất cả các hình chữ nhật mở 1 / n-by-1 / (n + 1) với n nằm giữa 1 và N được bao gồm trong hình vuông đơn vị, sao cho không có hai phần trùng nhau .
Đối với mỗi hình chữ nhật, bạn phải tạo các số nguyên sau theo thứ tự:
- 1 nếu các cạnh ngang dài hơn các cạnh dọc, khác 0
- Tử số và mẫu số của tọa độ x của góc dưới bên trái
- Tử số và mẫu số của tọa độ y của góc dưới bên trái
Lưu ý rằng chúng ta lấy hình vuông đơn vị là (0, 1) x (0, 1)
, với các giá trị x chạy từ trái sang phải và các giá trị y chạy từ dưới lên trên.
Đầu ra dự kiến cuối cùng là nối các số nguyên này cho mỗi hình chữ nhật theo thứ tự tăng n, ở bất kỳ định dạng thuận tiện nào (ví dụ được in ra thiết bị xuất chuẩn hoặc dưới dạng danh sách được trả về từ hàm).
Ví dụ đầu vào và đầu ra
Đầu vào:
3
Đầu ra:
0 0 1 0 1 1 1 2 0 1 1 1 2 1 3
Phân tích này như sau:
0 (0/1, 0/1) 1 (1/2, 0/1) 1 (1/2, 1/3)
Chấm điểm
Đây là một thử thách chơi gôn, vì vậy câu trả lời có ít byte nhất sẽ thắng. Tuy nhiên, thuật toán của bạn cũng phải có hiệu quả hợp lý; nó sẽ có thể chạy cho tất cả N<=100
trong khoảng 10 phút.
Giải pháp của bạn phải đưa ra các giải pháp hợp lệ cho tất cả N<=100
, nhưng các thuật toán hoàn chỉnh có thể chứng minh cũng được hoan nghênh ngay cả khi chúng không phải là ngắn nhất.