Vấn đề
Chúng ta hãy xác định một Cantor tổng quát được đặt bằng cách lặp đi lặp lại xóa một số phân đoạn có độ dài hợp lý từ giữa tất cả các khoảng chưa được xóa, bắt đầu từ một khoảng liên tục duy nhất.
Với độ dài tương đối của các phân đoạn có nên xóa hay không và số lần lặp để thực hiện, vấn đề là viết một chương trình hoặc hàm tạo ra độ dài tương đối của các phân đoạn đã hoặc chưa bị xóa sau các n
lần lặp.
Ví dụ: Lặp lại xóa lần thứ 4 và thứ 6
Đầu vào:
n
- số lần lặp, được lập chỉ mục bắt đầu từ 0 hoặc 1
l
- danh sách các độ dài phân đoạn dưới dạng số nguyên dương gcd(l)=1
và độ dài lẻ, biểu thị độ dài tương đối của các phần tồn tại khi chúng bị xóa hoặc bị xóa, bắt đầu từ một phân đoạn không bị xóa. Vì độ dài danh sách là số lẻ, các phân đoạn đầu tiên và cuối cùng không bao giờ bị xóa. Ví dụ, đối với Cantor thông thường, giá trị này sẽ là [1,1,1] cho một phần ba còn lại, một phần ba bị xóa và một phần ba thì không.
Đầu ra:
Danh sách số nguyên o
,, có gcd(o)=1
độ dài phân đoạn tương đối trong n
lần lặp thứ năm khi các phân đoạn không bị xóa trong lần lặp trước được thay thế bằng bản sao thu nhỏ của danh sách l
. Lặp lại đầu tiên chỉ là [1]
. Bạn có thể sử dụng bất kỳ phương thức đầu ra rõ ràng nào , thậm chí là đơn nguyên.
Ví dụ
n=0, l=[3,1,1,1,2] → [1]
n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2]
n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4]
n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27]
n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1]
Bạn có thể giả sử đầu vào là hợp lệ. Đây là môn đánh gôn , vì vậy chương trình ngắn nhất được tính bằng byte sẽ thắng.
[0, 1, 2, 4, 6, 7]
thay vì[3, 1, 1, 1, 2]
?