Submission
# | When | Author | Problem | Language | CPU | Memory | |
---|---|---|---|---|---|---|---|
20818 | 2024-06-08 23:04:40 | AHAMMED_99 | Square Reconstruction | C | 1 ms | 1536 kb | Accepted |
Source Code
#include <stdio.h> #include <math.h> #include <stdbool.h> #include <stdlib.h> #define MAX_N 1000000 #define MAX_SQRT_N 1000 bool is_prime[MAX_SQRT_N + 1]; int primes[MAX_SQRT_N + 1]; int prime_count = 0; void sieve() { for (int i = 2; i <= MAX_SQRT_N; i++) { is_prime[i] = true; } for (int p = 2; p * p <= MAX_SQRT_N; p++) { if (is_prime[p]) { for (int i = p * p; i <= MAX_SQRT_N; i += p) { is_prime[i] = false; } } } for (int p = 2; p <= MAX_SQRT_N; p++) { if (is_prime[p]) { primes[prime_count++] = p; } } } int main() { sieve(); int t; while (t--) { int n; long long m = 1; int temp = n; for (int i = 0; i < prime_count; i++) { int p = primes[i]; if (p * p > temp) break; int count = 0; while (temp % p == 0) { temp /= p; count++; } if (count % 2 != 0) { m *= p; } } if (temp > 1) { m *= temp; } } return 0; }