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

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


ตรวจสอบว่า N = 2ˣ + 2ʸ โดย x,y > 0

ตัวอย่าง: 10 = 2³ + 2¹

สังเกต: ถ้า N เป็นเลขคู่ → สามารถเขียนได้ (เพราะ 2ˣ + 2ʸ = 2 × (2ˣ⁻¹ + 2ʸ⁻¹) เป็นเลขคู่)
ถ้า N เป็นเลขคี่ → ไม่สามารถเขียนได้ (LSB ของฐานสองคือ 1)

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

bool isSumofTwosPower(int n) {
    return ((n & 1) == 0);
}

int main() {
    int num = 86;
    if (isSumofTwosPower(num)) cout << "Can be represented";
    else cout << "Cannot be represented";
}

ผลลัพธ์

Can be represented