Codeforces 344C - Rational Resistance

来源:互联网 发布:淘宝客服主管考核 编辑:程序博客网 时间:2024/05/16 09:12

刚开始有一个阻值为1的电阻。

每次可以将一个电阻和某个阻值为1的电阻串联或者并联来获得一个新的电阻,问至少需要多少个阻值为1的电阻能凑出阻值为ab(1a,b1018)的电阻


假设当前手头上有xy的电阻,那么每一次加电阻可以将其变为xx+y或者x+yy的电阻。通过简单的模拟前五次左右的策略不看出规律

具体见代码

#include<bits/stdc++.h>using namespace std;#define LL long long int main(){    LL a,b;    cin>>a>>b;    LL tim = 0;    do{        if(a > b) swap(a,b);        if(a == 1){            tim += b,b = 1;        }        else{            tim += b / a;            b %= a;        }    } while(a != 1 || b != 1);    cout<<tim<<endl;    return 0;}
0 0