Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <algorithm>
- #include <vector>
- #include <set>
- #include <iterator>
- using namespace std;
- #define pair pair<int , int>
- void del(long long n, vector <pair> &v)
- {
- long long i = 2,pow=0;
- while (i * i <= n)
- {
- while (n % i == 0)
- {
- pow++;
- n = n / i;
- }
- if (pow > 0) v.push_back(make_pair(i, pow));
- pow = 0;
- i = i + 1;
- }
- if (n > 1) v.push_back(make_pair(n, 1));
- }
- int main() {
- //freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
- long long a, b=1, c;
- cin >> a >> c;
- vector <pair> A;
- vector <pair> C;
- vector <pair> B;
- del(a, A);
- del(c, C);
- if (c % a != 0 || C.size() < A.size())
- {
- cout << "-1"; return 0;
- }
- long long j=0;
- for (long long i = 0; i < C.size();i++)
- {
- //cout << "C " << C[i].first << " " << "степень " << C[i].second << "\n";
- if (A.size() > j) {
- //cout << "A " << A[j].first << "степень " << A[j].second << "\n";
- if (C[i].first == A[j].first && C[i].second > A[j].second)
- {
- //cout << "закидываем в b \n";
- B.push_back(make_pair(C[i].first, C[i].second));
- j++;
- }
- else if (C[i].first == A[j].first && C[i].second == A[j].second)
- {
- j++;
- }
- else if (C[i].first == A[j].first && C[i].second < A[j].second)
- {
- cout << "-1"; return 0;
- }
- else if (C[i].first > A[j].first)
- {
- cout << "-1"; return 0;
- }
- else
- B.push_back(make_pair(C[i].first, C[i].second));
- }
- else
- B.push_back(make_pair(C[i].first, C[i].second));
- }
- for (int i = 0; i < B.size(); i++)
- b *= (pow(B[i].first, B[i].second));
- cout << b;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement