ให้เราพิจารณาว่าเรามีจำนวนเต็ม n ปัญหาคือต้องตรวจสอบว่าจำนวนเต็มนี้มีรูปแบบอื่นในรูปแบบไบนารีที่เทียบเท่าหรือไม่ รูปแบบอื่นหมายถึง 101010….
วิธีการมีลักษณะดังนี้:ตรวจสอบแต่ละหลักโดยใช้เลขฐานสองที่เท่ากัน และถ้าสองตัวติดกัน ให้คืนค่าเท็จ มิฉะนั้น จะเป็นจริง
ตัวอย่าง
#include <iostream>
using namespace std;
bool hasAlternatePattern(unsigned int n) {
int previous = n % 2;
n = n/2;
while (n > 0) {
int current = n % 2;
if (current == previous) // If current bit is same as previous
return false;
previous = current;
n = n / 2;
}
return true;
}
int main() {
unsigned int number = 42;
if(hasAlternatePattern(number))
cout << "Has alternating pattern";
else
cout << "Has no alternating pattern";
} ผลลัพธ์
Has alternating pattern