Advertisement
Guest User

Untitled

a guest
May 25th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <set>
  6. #include <iterator>
  7. using namespace std;
  8. #define pair pair<int , int>
  9. void del(long long n, vector <pair> &v)
  10. {
  11. long long i = 2,pow=0;
  12. while (i * i <= n)
  13. {
  14. while (n % i == 0)
  15. {
  16. pow++;
  17. n = n / i;
  18. }
  19. if (pow > 0) v.push_back(make_pair(i, pow));
  20. pow = 0;
  21. i = i + 1;
  22. }
  23. if (n > 1) v.push_back(make_pair(n, 1));
  24. }
  25.  
  26. int main() {
  27. //freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
  28. long long a, b=1, c;
  29. cin >> a >> c;
  30.  
  31. vector <pair> A;
  32. vector <pair> C;
  33. vector <pair> B;
  34. del(a, A);
  35. del(c, C);
  36. if (c % a != 0 || C.size() < A.size())
  37. {
  38. cout << "-1"; return 0;
  39. }
  40. long long j=0;
  41. for (long long i = 0; i < C.size();i++)
  42. {
  43. //cout << "C " << C[i].first << " " << "степень " << C[i].second << "\n";
  44. if (A.size() > j) {
  45. //cout << "A " << A[j].first << "степень " << A[j].second << "\n";
  46. if (C[i].first == A[j].first && C[i].second > A[j].second)
  47. {
  48. //cout << "закидываем в b \n";
  49. B.push_back(make_pair(C[i].first, C[i].second));
  50. j++;
  51. }
  52. else if (C[i].first == A[j].first && C[i].second == A[j].second)
  53. {
  54. j++;
  55. }
  56. else if (C[i].first == A[j].first && C[i].second < A[j].second)
  57. {
  58. cout << "-1"; return 0;
  59. }
  60. else if (C[i].first > A[j].first)
  61. {
  62. cout << "-1"; return 0;
  63. }
  64. else
  65. B.push_back(make_pair(C[i].first, C[i].second));
  66. }
  67. else
  68. B.push_back(make_pair(C[i].first, C[i].second));
  69.  
  70. }
  71.  
  72.  
  73.  
  74. for (int i = 0; i < B.size(); i++)
  75. b *= (pow(B[i].first, B[i].second));
  76. cout << b;
  77. return 0;
  78.  
  79.  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement