2
ลบบิตและนับ
พิจารณาทุก2^nสตริงไบนารีที่แตกต่างกันของความยาวและถือว่าn n > 2คุณได้รับอนุญาตให้ลบb < n/2บิตออกจากสตริงไบนารี่n-bได้อย่างแน่นอน จำนวนสตริงที่แตกต่างกันที่เหลือขึ้นอยู่กับว่าคุณลบบิตใด สมมติว่าเป้าหมายของคุณคือการปล่อยให้สายอักขระที่เหลืออยู่น้อยที่สุดเท่าที่จะเป็นไปได้ความท้าทายนี้คือการเขียนโค้ดเพื่อคำนวณว่าคุณสามารถออกจากหน้าที่การใช้งานnเพียงเล็กน้อย ตัวอย่างและn=3 b = 1คุณสามารถออกจากเพียงสองสายและ1100 สำหรับn=9และb = 1,2,3,4เรามี70,18,6,2 สำหรับn=8และb = 1,2,3เรามี40,10,4 สำหรับn=7และb = 1,2,3เรามี20,6,2 สำหรับn=6และb = 1,2เรามี12,4 สำหรับn=5และb = 1,2เรามี6,2 สำหรับคำถามนี้ถูกวางโดยเดิมทีผมในปี 2014 ในรูปแบบที่แตกต่างกันในมิสซูรี่ อินพุตและเอาต์พุต รหัสของคุณควรเป็นจำนวนเต็มnและส่งออกจำนวนเต็มเดียวสำหรับแต่ละค่าbเริ่มต้นb = 0และเพิ่ม คะแนน คะแนนของคุณใหญ่ที่สุดnซึ่งรหัสของคุณเสร็จสมบูรณ์b < n/2ภายในไม่กี่นาทีบนพีซีที่ใช้ Linux ของฉัน ในกรณีที่มีการพักเบรคbรหัสที่ใหญ่ที่สุดของคุณจะถูกนำไปสู่nชัยชนะที่ยิ่งใหญ่ที่สุดร่วมกัน ในกรณีที่เสมอกันในเกณฑ์นั้นรหัสที่เร็วที่สุดสำหรับค่าที่ใหญ่ที่สุดnและbตัดสินใจ หากเวลาอยู่ภายในหนึ่งหรือสองวินาทีของกันคำตอบที่โพสต์แรกจะชนะ ภาษาและห้องสมุด คุณสามารถใช้ภาษาของห้องสมุดใด ๆ ที่คุณต้องการ เพราะฉันต้องเรียกใช้รหัสของคุณมันจะช่วยถ้ามันฟรี (เหมือนเบียร์) และทำงานใน …
26
fastest-code