ในที่นี้เราจะมาดูกันว่าถ้าเราสามารถแสดงตัวเลขเป็นผลรวมของสองยกกำลังไม่เป็นศูนย์ของ 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