fork download
  1. #include<bits/stdc++.h>
  2.  
  3. typedef long long int ll;
  4. typedef long double ld;
  5.  
  6. #define fast ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
  7. #define enddl '\n'
  8. #define ff first
  9. #define ss second
  10. #define pb push_back
  11. #define mp make_pair
  12. #define pii pair<int,int>
  13. #define full(a) a.begin(),a.end()
  14. #define mem(a,x) memset(a,x,sizeof(a))
  15.  
  16. const int MAXN = 1e7+5;
  17. const int MOD = 1e9+7;
  18.  
  19. using namespace std;
  20.  
  21. vector<pii> v[MAXN];
  22. bool prime[MAXN];
  23. int hans;
  24.  
  25. void sieve() {
  26. mem(prime,true);
  27. prime[0] = prime[1] = false;
  28. for(int i=2;i<MAXN;i++) {
  29. if(prime[i]) {
  30. hans = i;
  31. for(int j=i;j<MAXN;j+=i) {
  32. if(j>i) prime[j] = false;
  33. int temp = j;
  34. int x = 0;
  35. while((temp%i) == 0) {
  36. x++;
  37. temp/=i;
  38. }
  39. v[j].pb({i,x});
  40. }
  41. }
  42. }
  43. }
  44.  
  45. int main() {
  46. //freopen("input10.txt","r",stdin);
  47. //freopen("output10.txt","w",stdout);
  48. fast;
  49. sieve();
  50. int t;
  51. cin >> t;
  52. while(t--) {
  53. int n;
  54. cin >> n;
  55. ll ans = 1;
  56. for(auto it : v[n]) {
  57. if((it.ss%2) == 1) {
  58. ans = ans * (ll(it.ff));
  59. }
  60. }
  61. cout << ans << endl;
  62. }
  63. }
Success #stdin #stdout 4.74s 733728KB
stdin
3
2
4
12
stdout
2
1
3