Tóm tắt
Với đầu vào k
, tìm một phân vùng của các số nguyên 1
để n
thành k
tập con tổng hợp miễn phí cho lớn nhất n
bạn có thể trong vòng 10 phút.
Bối cảnh: Số Schur
Một tập hợp A
là tổng miễn phí nếu tự tổng của A + A = { x + y | x, y in A}
nó không có phần tử chung với nó.
Đối với mỗi số nguyên dương k
có một số nguyên lớn nhất S(k)
sao cho tập hợp {1, 2, ..., S(k)}
có thể được phân chia thành k
các tập con không có tổng. Số này được gọi là số Schur thứ k (OEIS A045652 ).
Ví dụ , S(2) = 4
. Chúng ta có thể phân vùng {1, 2, 3, 4}
dưới dạng {1, 4}, {2, 3}
, và đó là phân vùng duy nhất thành hai tập con không có tổng, nhưng bây giờ chúng ta không thể thêm một 5
vào một trong hai phần.
Thử thách
Viết chương trình xác định thực hiện như sau:
- Lấy số nguyên dương
k
làm đầu vào - Viết dấu thời gian Unix hiện tại vào thiết bị xuất chuẩn
- Kết quả đầu ra một chuỗi các phân vùng của
1
đển
vàok
tập con tổng hợp miễn phí cho tăngn
, sau mỗi chuỗi với dấu thời gian Unix hiện hành.
Người chiến thắng sẽ là chương trình in phân vùng lớn nhất n
trong vòng 10 phút trên máy tính của tôi khi được đưa vào đầu vào 5
. Các mối quan hệ sẽ bị phá vỡ trong thời gian nhanh nhất để tìm một phân vùng lớn nhất n
, tính trung bình trong ba lần chạy: đó là lý do tại sao đầu ra phải bao gồm dấu thời gian.
Chi tiết quan trọng:
- Tôi có Ubuntu Precise, vì vậy nếu ngôn ngữ của bạn không được hỗ trợ, tôi sẽ không thể chấm điểm.
- Tôi có CPU Intel Core2 Quad, vì vậy nếu bạn muốn sử dụng đa luồng thì không có điểm nào sử dụng nhiều hơn 4 luồng.
- Nếu bạn muốn tôi sử dụng bất kỳ cờ trình biên dịch cụ thể hoặc triển khai nào, hãy ghi lại rõ ràng trong câu trả lời của bạn.
- Bạn sẽ không đặc biệt mã của bạn để xử lý đầu vào
5
. - Bạn không cần phải xuất ra mọi cải tiến bạn tìm thấy. Ví dụ, đối với đầu vào,
2
bạn chỉ có thể xuất phân vùng chon = 4
. Tuy nhiên, nếu bạn không xuất bất cứ thứ gì trong 10 phút đầu tiên thì tôi sẽ ghi điểm đón = 0
.
n=59
và sắp xếp theo số lượng lớn nhất của số được phép ít hơn sốnextN
chon=64
. Sắp xếp theo độ dài của danh sách số không được phép (có thể lặp lại) dẫn rất nhanh đến mộtn=30
mẫu thanh lịch .