版权声明: https://blog.csdn.net/Ghost_Pig/article/details/82933415
- 首先我们看到这道题,他给出的公式可以看作
- 并联时R=R1*R2/R1+R2
- 串联时R=R1+R2
- 由它可以推出当我们得到一个A/B的电容时,我们可以得到一个A+B/B或者A/A+B的电容
- 我们正面不好从1推到A/B,就可以倒着来
#include<bits/stdc++.h>
using namespace std;
long long t,a,b,ans;
long long gcd(long long x, long long y)
{
if (y == 0) return x;
return gcd(y, x % y);
}
int main()
{
// freopen("capacitor.in","r",stdin);
// freopen("capacitor.out","w",stdout);
scanf("%lld", &t);
while (t--)
{
scanf("%lld%lld", &a, &b);
long long c = gcd(a,b);
a /= c;
b /= c; //我们先求一个gcd再运算
ans = 0;
while (a != 0 && b != 0)
{
if (a > b)
{
ans += a/b;
a %= b;
}
else
{
swap(a,b);
ans += a/b;
a %= b;
}
}
printf("%lld\n",ans);
}
return 0;
}