题意是给你很多1欧姆的电阻,经过很多次的串并联之后最少需要多少电阻可以构造出 a / b
这大概是一个数论题?反正标签是这样说的
虽然对于数论我不是很会
但这个题很有意思就尝试了一下
电阻的串并联大家肯定都很明白
首先像三分之一这样的电阻肯定是三个电阻串联得到的
所以几分之一就需要几个电阻并联
其他情况的话…
举个例子
比值是3 / 2 我们可以想到拆成 1 / 2 + 1,这样就相当于是一个1 / 2 的电阻串联一个电阻,一个1 / 2 的电阻又可以是两个电阻并联
既然 a > b 的时候可以这样想,那 a < b 怎么办
这时候就不能拆成一个数加另一个数了
反过来想 a > b 可以拆成串联的状态,那 a > b 就拆成并联的状态好了
这样一想 2 / 3 就可以从 1 / (3 / 2) 得到,那就可以把分母拆成 1 / 2 + 1
所以对于一个比值,不论是 a > b 还是 a < b 拆成的样子是一样的,只是串并联的不同
那就每次将大的数比小的数大的部分加到答案中,然后继续将剩余的部分再进行这样的操作就好了吖
我同学告诉我这是gcd,非数论选手打扰了
ll ans;
void dfs(ll n,ll m){
if(n == 0 || m == 0) return;
if(n >= m){
ans += n / m;
dfs(n%m,m);
}else{
ans += m / n;
dfs(n,m%n);
}
}
int main(){
ll a , b;
cin >> a >> b;
dfs(a , b);
cout << ans;
return 0;
}