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

เลขร้ายพร้อมตัวอย่างในภาษา C++


ในปัญหานี้ เราได้รับอาร์เรย์ตัวเลข N หน้าที่ของเราคือตรวจสอบว่าตัวเลขนั้นเป็น เลขร้ายหรือเลขแปลก

เลขร้าย: เป็นจำนวนบวกซึ่งมีเลขคู่เท่ากับ 1 ในการขยายฐานสอง

ตัวอย่าง: 5, 17

จำนวนที่น่ารังเกียจ: เป็นจำนวนบวกที่มีเลข 1 เป็นเลขคี่ในการขยายไบนารี

ตัวอย่าง : 4, 6

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล: ไม่มี =65

ผลลัพธ์: เลขร้าย

คำอธิบาย:

การขยายไบนารีของ 65 :1000001

แนวทางแก้ไข:

วิธีแก้ปัญหาง่ายๆ ก็คือการหาการขยายฐานสองของตัวเลขแล้วนับจำนวน 1 ในการขยาย หากการนับเป็นเลขคู่จะเป็นเลขชั่ว มิฉะนั้น จะเป็นเลขประหลาด

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;

int isEvilNumber(int n) {

   int count = 0;
   while (n != 0) {
      int r = n % 2;
      if(r == 1)
         count++;
      n = n / 2;
   }
   
   if (count % 2 == 0)
      return 1;
   else
      return 0;
}

int main(void)
{
   int num = 2049;
   if (isEvilNumber(num) )
      cout<<"The number "<<num<<" is an Evil Number";
   else
      cout<<"The number "<<num<<" is an Odious Number";
   return 0;
}

ผลลัพธ์ -

The number 2049 is an Evil Number