Untitled

 avatar
unknown
c_cpp
9 months ago
890 B
6
Indexable
#include <stdio.h>
#include <regex.h>
#include <stdbool.h>
#include <string.h> 

#define MAX_BINARY_SIZE 1048576 

bool is_power_of_two(const char* binary) {
    regex_t regex;
    const char* pattern = "^0*10*$"; 
    int reti;

    reti = regcomp(&regex, pattern, REG_EXTENDED);


    reti = regexec(&regex, binary, 0, NULL, 0);
    regfree(&regex); 

   
    return reti == 0;
}

int main() {
    int n;
    scanf("%d", &n);
    getchar(); 

    for (int i = 0; i < n; i++) {
        char binary[MAX_BINARY_SIZE]; 
        fgets(binary, sizeof(binary), stdin); 

        size_t binary_length = strlen(binary);
        if (binary_length > 0 && binary[binary_length - 1] == '\n') {
            binary[binary_length - 1] = '\0';
        }

        if (is_power_of_two(binary)) {
            printf("True\n");
        } else {
            printf("False\n");
        }
    }

    return 0;
}
Editor is loading...
Leave a Comment