Hãy tưởng tượng chúng ta có một tập hợp hữu hạn các số nguyên dương. Tập hợp này có thể được biểu diễn dưới dạng một dòng các chấm trong đó mỗi số nguyên có trong tập hợp được điền vào giống như một scantron hoặc thẻ đục lỗ . Ví dụ: tập hợp {1,3,4,6}
có thể được biểu diễn dưới dạng:
*.**.*
*
đại diện cho một thành viên của tập hợp của chúng tôi và .
đại diện cho một số nguyên không phải là thành viên của tập hợp anh ấy đặt.
Những bộ này có "yếu tố". Loosely x là một yếu tố của y nếu y có thể được xây dựng từ các bản sao của x. Nghiêm khắc hơn định nghĩa của chúng tôi về yếu tố như sau:
- x là hệ số của y khi và chỉ khi y là liên kết của một số tập hợp rời rạc , tất cả đều là x với phần bù.
Chúng tôi sẽ gọi *.*
một yếu tố của *.**.*
bởi vì nó được thực hiện khá rõ ràng lên của hai bản sao của *.*
cuối đặt để kết thúc.
*.**.*
------
*.*...
...*.*
Các yếu tố không phải là kết thúc để kết thúc, chúng tôi cũng sẽ nói rằng đó *.*
là một yếu tố của*.*.*.*
*.*.*.*
-------
*.*....
....*.*
Các yếu tố cũng có thể chồng chéo. Điều này cũng có nghĩa *.*
là một yếu tố của****
****
----
*.*.
.*.*
Tuy nhiên, một số không thể được bao phủ bởi một yếu tố nhiều hơn một lần. Ví dụ *.*
là không một yếu tố của *.*.*
.
Đây là một ví dụ phức tạp hơn:
*..*.**..***.*.*
Điều này có *..*.*
như là một yếu tố. Bạn có thể thấy rằng bên dưới nơi tôi đã xếp hàng ba trường hợp *..*.*
.
*..*.**..***.*.*
----------------
*..*.*..........
......*..*.*....
..........*..*.*
Bài tập
Cho một tập hợp bởi bất kỳ đầu ra biểu diễn hợp lý nào, tất cả các tập hợp là các yếu tố của đầu vào.
Bạn có thể lập chỉ mục theo bất kỳ giá trị nào (nghĩa là bạn có thể chọn một số nhỏ nhất có thể có trong đầu vào). Bạn cũng có thể giả định rằng bộ đầu vào sẽ luôn chứa giá trị nhỏ nhất đó.
Đây là một câu hỏi về môn đánh gôn, vì vậy bạn nên cố gắng làm điều này với càng ít byte càng tốt.
Các trường hợp thử nghiệm
Những trường hợp thử nghiệm được thực hiện bằng tay, có thể có một hoặc hai lỗi trên những trường hợp lớn hơn
* -> *
*.*.* -> *, *.*.*
*.*.*.* -> *, *.*, *...*, *.*.*.*
****** -> *, **, *..*, ***, *.*.*, ******
*..*.**..***.*.* -> *, *..*.*, *.....*...*, *..*.**..***.*.*
*...*****.**.** -> *, *...**.**, *.....*, *...*****.**.**
*.*.*
= x+x^2+x^4
, thì 1+x+x^2
= ***
sẽ là một ước, phải không? x+x^2+x^4 = (1-x+x^2)(1+x+x^2)
*
được liệt kê là một yếu tố đại diện cho tập hợp con tương tự như *.
hoặc *..
.
[1,3,5,7]
cho*.*.*.*
) chúng ta có thể giả định rằng nó được sắp xếp?