ตรวจสอบว่า 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