用欧几里得即辗转相除法做即可(就是个水题~)
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll T;
ll a,b;
ll res;
ll gcd(ll a,ll b,ll ans){
if(a==b)return ans;
else{
ll t;
if(a%b==0)t=b,ans+=a/b-1;
else t=a%b,ans+=a/b;
return gcd(b,t,ans);
}
}
int main(){
freopen("sword.in","r",stdin);
freopen("sword.out","w",stdout);
scanf("%lld",&T);
while(T--){
scanf("%lld%lld",&a,&b);
if(a<b)swap(a,b);
res=gcd(a,b,0);
printf("%lld\n",res);
}
return 0;
}