Advertisement
Guest User

Untitled

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