#include <bits/stdc++.h>
using namespace std;
// returns true if n is power of 8
bool checkPowerof8(unsigned n)
{
/* for(int i = 1; i < INT_MAX; i = i*8)
cout << bitset<32>(i) << endl;
*/
// return true if n is power of 2 and its only
// set bit is present at (0, 3, 6, ... ) position
return n && !(n & (n - 1)) && !(n & 0xB6DB6DB6);
}
int main()
{
unsigned n = 512;
if (checkPowerof8(n))
cout << n << " is power of 8";
else
cout << n << " is not a power of 8";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyByZXR1cm5zIHRydWUgaWYgbiBpcyBwb3dlciBvZiA4CmJvb2wgY2hlY2tQb3dlcm9mOCh1bnNpZ25lZCBuKQp7CgkvKglmb3IoaW50IGkgPSAxOyBpIDwgSU5UX01BWDsgaSA9IGkqOCkKCQljb3V0IDw8IGJpdHNldDwzMj4oaSkgPDwgZW5kbDsKCSovCQkKCS8vIHJldHVybiB0cnVlIGlmIG4gaXMgcG93ZXIgb2YgMiBhbmQgaXRzIG9ubHkKCS8vIHNldCBiaXQgaXMgcHJlc2VudCBhdCAoMCwgMywgNiwgLi4uICkgcG9zaXRpb24KCXJldHVybiBuICYmICEobiAmIChuIC0gMSkpICYmICEobiAmIDB4QjZEQjZEQjYpOwp9CgppbnQgbWFpbigpIAp7Cgl1bnNpZ25lZCBuID0gNTEyOwoKCWlmIChjaGVja1Bvd2Vyb2Y4KG4pKQoJCWNvdXQgPDwgbiA8PCAiIGlzIHBvd2VyIG9mIDgiOwoJZWxzZSAKCQljb3V0IDw8IG4gPDwgIiBpcyBub3QgYSBwb3dlciBvZiA4IjsKCglyZXR1cm4gMDsKfQ==