บทนำ
มีผู้เก็บภาษีที่มีปัญหาในการจัดการภาษีในราชอาณาจักรของเขา: บันทึกทางประวัติศาสตร์ได้ถูกไฟไหม้ครั้งใหญ่
เขาต้องการค้นหาว่ามีอดีตที่เป็นไปได้มากเพียงใดในแง่ที่ว่าเงินในปัจจุบันได้รับมาจากไหน โชคดีที่อาณาจักรของเขาเรียบง่ายมาก
ราชอาณาจักรสามารถสร้างแบบจำลองโดยเมทริกบูลีน 2D ซึ่งl
หมายถึงคนที่ได้รับมรดกและO
เป็นตัวแทนของคนที่ไม่มี ตัวอย่างเช่น:
l O l l
O O O l
l O l O
O O O l
(มันจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ)
ในรุ่นต่อไปราชอาณาจักรนั้นเล็กกว่า (หมาป่านั้นแข็งแกร่ง!)
รุ่นต่อไปจะมีลักษณะเช่นนี้ซ้อนทับกับรุ่นก่อนหน้า ( x
เป็นตัวยึดตำแหน่งสำหรับรุ่นถัดไปในรุ่นถัดไป)
l O l l
x x x
O O O l
x x x
l O l O
x x x
O O O l
ผู้สืบเชื้อสายมาจะดูที่บรรพบุรุษที่อยู่รอบตัวพวกเขาโดยตรง (ดังนั้นด้านซ้ายx
จะเห็น { l
, O
, O
, O
} เรียกว่าเขตสี่เหลี่ยม unaligned )
หากบรรพบุรุษเพียงคนเดียวเท่านั้นที่ได้รับเงินมรดกผู้สืบทอดจะได้รับเงินจากพวกเขา หากมีบรรพบุรุษมากกว่าหนึ่งคนได้รับมรดกพวกเขาจะทะเลาะกันและลูกหลานจะจบลงด้วยการไม่รับมรดก หากไม่มีใครได้รับมรดกผู้สืบทอดจะไม่ได้รับเงินใด ๆ
(ผู้สืบทอดมากกว่าหนึ่งคนสามารถสืบทอดจากบรรพบุรุษหนึ่งคน)
ดังนั้นรุ่นต่อไปจะมีลักษณะเช่น:
l l O
l l O
l l O
ท้าทาย
อินพุต
สถานะปัจจุบันของการสร้างเป็นอาร์เรย์ของค่าสองค่าที่ต่างกันโดยที่อาร์เรย์ภายในทั้งหมดมีความยาวเท่ากัน
เช่นสำหรับตัวอย่างข้างต้นอาจเป็น:
[
[True, True, False],
[True, True, False],
[True, True, False]
]
เอาท์พุต
จำนวนเต็มแทนจำนวนรุ่นก่อนหน้าที่ไม่ซ้ำกันโดยที่รุ่นถัดไปคืออินพุต
คุณสามารถสันนิษฐานได้ว่าคำตอบจะน้อยกว่า 2 ^ 30 - 1 เสมอ (หรือ 1073741823)
รุ่นก่อนหน้านี้จะถูกเรียกว่า "preimage" และความท้าทายนี้จะนับ preimages
เกณฑ์การให้คะแนน
มันคือ เร็วที่สุดรหัส ความท้าทายดังนั้นการส่งแต่ละครั้งจะถูกทดสอบบนคอมพิวเตอร์ของฉันและการส่งที่ใช้เวลาน้อยที่สุดจะเป็นผู้ชนะ
ตัวอย่างอินพุตและเอาต์พุต
( 1
ผู้สืบทอดที่ได้รับมรดกเงินและ0
ผู้สืบทอดที่ไม่ได้รับเงิน)
การป้อนข้อมูล:
[[1, 0, 1],
[0, 1, 0],
[1, 0, 1]]
เอาท์พุท:
4
การป้อนข้อมูล:
[[1, 0, 1, 0, 0, 1, 1, 1],
[1, 0, 1, 0, 0, 0, 1, 0],
[1, 1, 1, 0, 0, 0, 1, 0],
[1, 0, 1, 0, 0, 0, 1, 0],
[1, 0, 1, 0, 0, 1, 1, 1]]
เอาท์พุท:
254
การป้อนข้อมูล:
[[1, 1, 0, 1, 0, 1, 0, 1, 1, 0],
[1, 1, 0, 0, 0, 0, 1, 1, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 0, 0, 0, 0, 1, 1, 0, 0]]
เอาท์พุท:
11567