#include <stdio.h> #include <stdint.h> // Complete the function const char* is_power_of_two(uint32_t n) { // Your logic here uint32_t m; m=n-1; if ((n >0) && ((n & m) == 0)) return "YES"; else return "NO"; } int main() { uint32_t n; scanf("%u", &n); const char* result = is_power_of_two(n); printf("%s", result); return 0; }
the number has to be positive and bitwise AND with (n-1) gotta be zero
If you subtract 1 from a power of two, all the bits to the right of the leading '1' become '1', and the leading '1' becomes '0'.
Test Cases
Test Results
Input
8
Expected Output
YES