传送门
题目大意
一 个 电 阻 器 件 电 阻 R 0 = 1 两 个 电 阻 器 件 可 以 串 联 也 可 以 并 联 串 联 R = R 1 + R 2 并 联 R = 1 1 R 1 + 1 R 2 问 合 成 a b 最 少 需 要 多 少 个 电 阻 一个电阻器件电阻R_0=1\\两个电阻器件可以串联也可以并联\\串联R=R_1+R_2\\并联R=\frac{1}{\frac{1}{R_1}+\frac{1}{R_2}}\\问合成\frac{a}{b}最少需要多少个电阻 一个电阻器件电阻R0=1两个电阻器件可以串联也可以并联串联R=R1+R2并联R=R11+R211问合成ba最少需要多少个电阻
思路
答 案 就 是 欧 几 里 得 辗 转 相 除 法 的 步 数 设 当 前 电 阻 为 c d 串 联 : c d + 1 = c + d d 并 联 : 1 1 c d + 1 1 = 1 d c + 1 1 = 1 c + d c = c c + d 我 们 可 以 用 给 出 的 a , b 不 断 用 大 数 减 去 小 数 , 直 到 有 一 个 数 为 零 , 每 减 一 次 就 要 加 一 答案就是欧几里得辗转相除法的步数\\设当前电阻为\frac{c}{d}\\串联:\frac{c}{d}+1=\frac{c+d}{d}\\并联:\frac{1}{\frac{1}{\frac{c}{d}}+\frac{1}{1}}=\frac{1}{\frac{d}{c}+\frac{1}{1}}=\frac{1}{\frac{c+d}{c}}=\frac{c}{c+d}\\我们可以用给出的a,b不断用大数减去小数,直到有一个数为零,每减一次就要加一 答案就是欧几里得辗转相除法的步数设当前电阻为dc串联:dc+1=dc+d并联:dc1+111=cd+111=cc+d1=c+dc我们可以用给出的a,b不断用大数减去小数,直到有一个数为零,每减一次就要加一
代码
int main()
{
ll a,b;
scanf("%lld%lld",&a,&b);
ll ans=0;
while(b!=0){
ans+=a/b;
ll c=a%b;
a=b;
b=c;
}
printf("%lld\n",ans);
}