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

ตรวจสอบว่าตัวเลขสามารถแสดงเป็น 2^x + 2^y ใน C++ . ได้หรือไม่


ในที่นี้เราจะมาดูกันว่าถ้าเราสามารถแสดงตัวเลขเป็นผลรวมของสองยกกำลังไม่เป็นศูนย์ของ 2 ได้ ดังนั้นเราจะตรวจสอบว่าตัวเลขที่ระบุ N สามารถแสดงเป็น (2 x + 2 ) โดยที่ x, y> 0. สมมติว่าตัวเลขคือ 10 ซึ่งสามารถแทนด้วย 2 3 + 2 1 .

วิธีการนั้นง่าย มีสองกรณี หากตัวเลข n เป็นเลขคู่ สามารถแสดงเป็น 2 x . โดยที่ x> 0 อีกกรณีหนึ่งคือว่า N เป็นเลขคี่ มันไม่สามารถแสดงเป็นผลรวมของยกกำลัง 2 ได้ เราไม่สามารถใช้กำลังเป็น 0 ดังนั้นเราจึงไม่สามารถได้เลขคี่ สำหรับเลขคี่ทั้งหมด LSb ของการแทนค่าไบนารีคือ 1

ตัวอย่าง

#include <iostream>
using namespace std;
bool isSumofTwosPower(int n) {
   if((n & 1) == 0){
      return true;
   }else{
      return false;
   }
}
int main() {
   int num = 86;
   if(isSumofTwosPower(num)){
      cout << "Can be represented";
   }else{
      cout << "Cannot be represented";
   }
}

ผลลัพธ์

Can be represented