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