/* -*- coding: utf-8 -*- * * 816.cc: No.816 Beautiful tuples - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const long long LINF = 1LL << 62; /* typedef */ typedef long long ll; /* global variables */ /* subroutines */ inline bool beautiful(ll a, ll b, ll c) { return (a + c) % b == 0 && (b + c) % a == 0; } /* main */ /* a+c=xb, b+c=ya (a0,y>0) b-a=ya-xb=xb-ya */ int main() { ll a, b; scanf("%lld%lld", &a, &b); ll ab = a + b, minc = LINF; for (int c = 1; c * c <= ab; c++) if (ab % c == 0) { ll d = ab / c; if (a != c && b != c && beautiful(a, b, c) && minc > c) minc = c; if (a != d && b != d && beautiful(a, b, d) && minc > d) minc = d; } printf("%lld\n", (minc >= LINF) ? -1 : minc); return 0; }