(大意)
對於一個而言,我們可以將它變爲 或 ,那麼現在有一個最終結果,求從變爲需要多少次變化
(原題)
首先先將化爲最簡分數,然後一步步逆推就好了
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
int T;
long long a, b, ans;
ll gcd(ll x, ll y)
{
if (!y) return x;
return gcd (y, x % y);
}//求最大公因數
int main()
{
// freopen("capacitor.in", "r", stdin);
// freopen("capacitor.out", "w", stdout);
scanf("%d", &T);
for (int i = 1; i <= T; ++i)
{
ans = 0;
scanf("%lld%lld", &a, &b);
ll t = gcd (a, b);
a /= t;
b /= t;
if (a < b) swap(a, b);
while (b != 1)
{
a -= b; ans++;
if (a < b) swap(a, b);
}//逆推
printf("%lld\n", a + ans);
}
}