Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนองค์ประกอบขั้นต่ำที่จะลบออกเพื่อให้ XOR สูงสุดโดยใช้ C ++


คำชี้แจงปัญหา

กำหนดหมายเลข N ภารกิจคือการค้นหาจำนวนองค์ประกอบขั้นต่ำที่จะลบออกระหว่างเป็น N เพื่อให้ XOR ที่ได้รับจากองค์ประกอบที่เหลือมีค่าสูงสุด

อัลกอริทึม

<ก่อน>1. ถ้า n เป็น 1 หรือ 2 ก็ไม่จำเป็นต้องลบองค์ประกอบใด ๆ ดังนั้นคำตอบคือศูนย์2 หาจำนวนที่ยกกำลัง 2 และมากกว่าหรือเท่ากับ ให้เราเรียกหมายเลขนี้ว่า nextNumber 2.1 ถ้า n ==nextNumber หรือ n ==(nextNumber – 1) คำตอบคือ 1 2.2 ถ้า n =(nextNumber -2) คำตอบคือ 03 ถ้า n เป็นเลขคู่ คำตอบก็คือ 1 ไม่เช่นนั้น 2

ตัวอย่าง

#include ใช้เนมสเปซ std;int nextPowerOf2(int n){ if (n &&!(n &(n - 1))) { return n; } int cnt =0; ในขณะที่ (n) { n =n / 2; ++cnt; } return (1 <