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

ตรวจสอบว่าตัวเลขที่ระบุมีน้อยหรือไม่มีในภาษา C++


ในส่วนนี้เราจะมาดูวิธีการตรวจเช็คตัวเลขว่ากระจัดกระจายหรือไม่ ตัวเลขจะเบาบางถ้าการแทนค่าเลขฐานสองของตัวเลขนั้น มี 1 วินาทีติดต่อกันไม่เกินสองหรือมากกว่า สมมติว่าตัวเลขเช่น 72 นี่คือ 01001000 ในที่นี้ไม่มี 1 วินาทีหรือมากกว่าติดต่อกัน

ในการตรวจสอบตัวเลขเบาบางหรือไม่ เราจะนำตัวเลขนั้นมาเป็น n จากนั้นเลื่อนตัวเลขนั้นไปทางขวาหนึ่งบิต แล้วดำเนินการระดับบิต AND หากผลลัพธ์เป็น 0 แสดงว่าเป็นจำนวนเบาบาง ไม่เช่นนั้นก็ไม่ใช่

ตัวอย่าง

#include <iostream>
using namespace std;
bool isSparseNumber(int n) {
   int res = n & (n >> 1);
   if(res == 0)
      return true;
   return false;
}
int main() {
   int num = 72;
   if(isSparseNumber(num)){
      cout << "This is sparse number";
   } else {
      cout << "This is not sparse number";
   }
}

ผลลัพธ์

This is sparse number