Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1.  
  2. #include<iostream>
  3. #include<vector>
  4. #include<cmath>
  5. #include<set>
  6. #include<algorithm>
  7.  
  8. int main()
  9. {
  10. std::vector<long long> result;
  11. std::vector<long long> tab(10000006, 1);
  12. std::vector<long long> t(10000006, 1);
  13. std::vector<long long> w;
  14. std::vector<long long> v;
  15. long long n;
  16. long long a;
  17. long long m;
  18. long long dzielnik;
  19. long long pierw;
  20. long long x;
  21. std::cin>>n;
  22. for(long long j=0; j<n; ++j)
  23. {
  24.  
  25. v.clear();
  26. std::cin>>m;
  27. dzielnik=2;
  28. pierw=sqrt(m);
  29. while(m>1&&dzielnik<=pierw)
  30. {
  31. while(m%dzielnik==0)
  32. {
  33. v.push_back(dzielnik);
  34. m/=dzielnik;
  35. }
  36. ++dzielnik;
  37. }
  38. if(m>1)
  39. {
  40. v.push_back(m);
  41. }
  42.  
  43. x=v.size();
  44. int iloczyn=1;
  45. int wynik=2;
  46.  
  47. for(long long i=1; i<x; i++)
  48. {
  49. if(v[i]==v[i-1])
  50. {
  51. wynik++;
  52. t[v[i]]++;
  53. tab[v[i]]++;
  54.  
  55.  
  56. if(i==x-1)
  57. {
  58. iloczyn=iloczyn*wynik;
  59. }
  60.  
  61. }
  62. else
  63. {
  64. iloczyn=iloczyn*wynik;
  65. wynik=2;
  66.  
  67. if(i==x-1)
  68. {
  69. iloczyn=iloczyn*wynik;
  70. }
  71. }
  72. }
  73. for(long long i=1; i<x; i++)
  74. {
  75. if(i==1) w.push_back(v[i]);
  76. if(v[i]!=v[i-1]) w.push_back(v[i]);
  77. }
  78. int y;
  79. y=w.size();
  80. int it;
  81. it=y-1;
  82. //for(int i=0; i<y; i++) std::cout<<w[i];
  83. //std::cout<<std::endl<<t[2]<<" "<<t[3]<<" "<<t[7];
  84. int dziel=1;
  85.  
  86. for(long long i=0; i<iloczyn; i++)
  87. {
  88. dziel=1;
  89. for(int q=0; q<y; q++)
  90. {
  91. dziel*=std::pow(w[q], t[w[q]]);
  92.  
  93.  
  94.  
  95. }
  96. result.push_back(dziel);
  97. for(long long q=it; q>=0; q--)
  98. {
  99. t[w[q]]--;
  100. if(t[w[q]]!=-1) break;
  101. else t[w[q]]=tab[w[q]];
  102.  
  103.  
  104. }
  105.  
  106.  
  107.  
  108. }
  109. std::sort(result.rbegin(), result.rend());
  110. int en=result.size();
  111. for( long long i=0; i<en; i++) std::cout<<result[i]<<std::endl;
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement