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

จำนวนขั้นต่ำที่ใช้ชุดบิตของตัวเลขที่กำหนดใน C++


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

กำหนดหมายเลขที่ไม่ได้ลงนาม ให้ค้นหาจำนวนขั้นต่ำที่สามารถเกิดขึ้นได้โดยใช้บิตของหมายเลขที่ไม่ได้ลงนามที่ให้ไว้

ตัวอย่าง

หากอินพุต =10 คำตอบจะเป็น 3

การแทนค่าไบนารีของ 10 คือ 1010 และจำนวนขั้นต่ำที่มี 2 ชุดบิตคือ 0011 เช่น 3

อัลกอริทึม

<ก่อน>1. นับจำนวนชุดบิต2. (จำนวนชุดบิต) ^ 2 – 1 หมายถึงจำนวนที่ย่อเล็กสุด)

ตัวอย่าง

#include ใช้เนมสเปซ std;int getSetBits(int n) { int cnt =0; ในขณะที่ (n) { ++cnt; n =n &(n - 1); } ส่งคืน cnt;}int getMinNumber(int n){ int bits =getSetBits(n); return pow(2, bits) - 1;}int main() { int n =10; cout <<"จำนวนขั้นต่ำ =" < 

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

จำนวนขั้นต่ำ =3