Run Time: 0.000
Ranking (as of 2016-07-02): 19 out of 405
Language: C++
/* UVa 1246 - Find Terrorists To build using Visual Studio 2012: cl -EHsc -O2 UVa_1246_Find_Terrorists.cpp */ #include <algorithm> #include <cstdio> #include <cmath> using namespace std; const int n_max = 10000, max_nr_divisors = 64; int nr_divisors[n_max + 1]; bool not_primes[max_nr_divisors + 1]; // not_primes[i] is true if i is not a prime bool nr_divisors_primes[n_max + 1]; void sieve_of_eratosthenes() { for (int i = 2, e = static_cast<int>(sqrt(static_cast<double>(max_nr_divisors))); i <= e; i++) if (!not_primes[i]) { for (int j = i * i; j <= max_nr_divisors; j += i) not_primes[j] = true; } } int main() { sieve_of_eratosthenes(); for (int i = 1; i <= n_max; i++) for (int j = i; j <= n_max; j += i) nr_divisors[j]++; for (int i = 2; i <= n_max; i++) nr_divisors_primes[i] = !not_primes[nr_divisors[i]]; int T; scanf("%d", &T); while (T--) { int L, H; scanf("%d %d", &L, &H); bool printed = false; for (int i = L; i <= H; i++) if (nr_divisors_primes[i]) { if (printed) putchar(' '); else printed = true; printf("%d", i); } if (printed) putchar('\n'); else puts("-1"); } return 0; }
No comments:
Post a Comment