Advertisement
Guest User

Untitled

a guest
May 20th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8. ifstream fi("sortare_divizori.in");
  9. ofstream g("sortare_divizori.out");
  10.  
  11. struct vect
  12. {
  13. int nr, poz;
  14. };
  15.  
  16. vect v[1001];
  17. int f[1001], n;
  18.  
  19. bool comp(vect comp1, vect comp2)
  20. {
  21. if(comp1.nr == comp2.nr)
  22. return f[comp1.poz] > f[comp2.poz];
  23. return comp1.nr < comp2.nr;
  24. }
  25.  
  26.  
  27. int diviz(int n)
  28. {
  29.  
  30. int d = 2,p,nrdiv=1;
  31. while(n > 1)
  32. {
  33. p = 0;
  34. while(n % d == 0)
  35. {
  36. p++;
  37. n = n / d;
  38. }
  39. if(p)
  40. nrdiv = nrdiv * (p+1);
  41. d++;
  42.  
  43. if(n > 1 && d * d >n) d = n;
  44.  
  45. }
  46. return nrdiv;
  47. }
  48.  
  49. int main()
  50. {
  51. fi >> n;
  52.  
  53. for(int i = 1; i <= n; i++)
  54. {
  55. fi >> v[i].nr;
  56.  
  57. f[i] = v[i].nr;
  58.  
  59. v[i].nr = diviz(v[i].nr);
  60.  
  61. v[i].poz = i;
  62. }
  63.  
  64. sort(v + 1, v + 1 + n, comp);
  65.  
  66. for(int i = n; i >= 1; i--)
  67. g << f[v[i].poz] <<" ";
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement