/* HackerRank - 101 Hack 44 #2 Compile: gcc main.c -std=c99 -o main.exe By Anton Babkin */ #include #include #include #define NUMTYPE int /* change to appropriate numeric type */ int numcmp(const void *xp, const void *yp) { NUMTYPE x = *(NUMTYPE *)xp; NUMTYPE y = *(NUMTYPE *)yp; if (x < y) { return -1; } else if (x > y) { return 1; } else { return 0; } } int main(void) { int g; scanf("%d", &g); int *a = malloc(g * (sizeof *a)); int maxN = 1; for (int i = 0; i < g; i++) { scanf("%d", &a[i]); if (a[i] > maxN) maxN = a[i]; } bool *isPrime = malloc((maxN + 1) * (sizeof *isPrime)); int *nPrimes = malloc((maxN + 1) * (sizeof *nPrimes)); for (int i = 1; i <= maxN; i++) { isPrime[i] = true; nPrimes[i] = 0; } isPrime[1] = false; for (int i = 2; i <= maxN; i++) { if (isPrime[i]) { for (int j = i + i; j <= maxN; j += i) { isPrime[j] = false; } nPrimes[i] = nPrimes[i-1] + 1; } else { nPrimes[i] = nPrimes[i-1]; } } for (int i = 0; i < g; i++) { int n = a[i]; int np = nPrimes[n]; if (np % 2 == 0) { printf("Bob\n"); } else { printf("Alice\n"); } } free(nPrimes); free(isPrime); return 0; }