Loading...
Submission
# When Author Problem Language CPU Memory
20818 2024-06-08 23:04:40 AHAMMED_99 Square Reconstruction C 1 ms 1536 kb Accepted
Test Cases
# CPU Memory Points
1 0 ms 1460 kb 1 Accepted
2 0 ms 1508 kb 1 Accepted
3 1 ms 1532 kb 1 Accepted
4 1 ms 1536 kb 1 Accepted
5 1 ms 1532 kb 1 Accepted
6 1 ms 1424 kb 1 Accepted
7 1 ms 1420 kb 1 Accepted
8 1 ms 1516 kb 1 Accepted
9 1 ms 1532 kb 1 Accepted
10 1 ms 1416 kb 1 Accepted
Source Code
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdbool.h>
  4. #include <stdlib.h>
  5.  
  6. #define MAX_N 1000000
  7. #define MAX_SQRT_N 1000
  8.  
  9. bool is_prime[MAX_SQRT_N + 1];
  10. int primes[MAX_SQRT_N + 1];
  11. int prime_count = 0;
  12.  
  13. void sieve() {
  14. for (int i = 2; i <= MAX_SQRT_N; i++) {
  15. is_prime[i] = true;
  16. }
  17. for (int p = 2; p * p <= MAX_SQRT_N; p++) {
  18. if (is_prime[p]) {
  19. for (int i = p * p; i <= MAX_SQRT_N; i += p) {
  20. is_prime[i] = false;
  21. }
  22. }
  23. }
  24. for (int p = 2; p <= MAX_SQRT_N; p++) {
  25. if (is_prime[p]) {
  26. primes[prime_count++] = p;
  27. }
  28. }
  29. }
  30.  
  31. int main() {
  32. sieve();
  33.  
  34. int t;
  35. scanf("%d", &t);
  36. while (t--) {
  37. int n;
  38. scanf("%d", &n);
  39.  
  40. long long m = 1;
  41. int temp = n;
  42.  
  43. for (int i = 0; i < prime_count; i++) {
  44. int p = primes[i];
  45. if (p * p > temp) break;
  46. int count = 0;
  47. while (temp % p == 0) {
  48. temp /= p;
  49. count++;
  50. }
  51. if (count % 2 != 0) {
  52. m *= p;
  53. }
  54. }
  55.  
  56. if (temp > 1) {
  57. m *= temp;
  58. }
  59.  
  60. printf("%lld\n", m);
  61. }
  62.  
  63. return 0;
  64. }
  65.