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

ตรวจสอบว่าตัวเลขสามารถแสดงเป็นผลรวมของเลขยกกำลังที่ไม่ใช่ศูนย์ของ 2 ใน C++ . ได้หรือไม่


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

วิธีการนั้นง่าย มีสองกรณี ถ้าตัวเลข n เป็นเลขคู่ มันสามารถแสดงเป็น 2x โดยที่ 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