You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
780 B
C++
32 lines
780 B
C++
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
typedef long long ll;
|
|
ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); }
|
|
ll calc(ll x, ll y)
|
|
{
|
|
if (x > y)
|
|
swap(x, y);
|
|
ll ans = 1;
|
|
for (ll i = 1; i * i <= y; i++)
|
|
if (y % i == 0)
|
|
{
|
|
if (y == i * (1 + x / gcd(x, i)))
|
|
ans += calc(x, i);
|
|
if (i * i != y)
|
|
{
|
|
ll j = y / i;
|
|
if (y == j * (1 + x / gcd(x, j)))
|
|
ans += calc(x, j);
|
|
}
|
|
}
|
|
//printf("calc(%lld, %lld) = %lld\n", x, y, ans);
|
|
return ans;
|
|
}
|
|
int main()
|
|
{
|
|
int T, x, y;
|
|
scanf("%d", &T);
|
|
for (int t = 1; t <= T; t++)
|
|
scanf("%d%d", &x, &y), printf("Case #%d: %lld\n", t, calc(x, y));
|
|
return 0;
|
|
} |