superoj912 resistance

来源:互联网 发布:里约奥运会女排数据 编辑:程序博客网 时间:2024/06/07 06:59

题目描述

输入格式

输入一行,为两个正整数 P 和 Q 。

输出格式

输出一行一个整数,即最少要用的电阻个数。

样例数据 1

输入  [复制]

3 2

输出

3

备注

【样例说明】
要得到一个 (3/2)Ω 的电阻,可以用两个电阻并联,再串联一个电阻。

【数据范围】
30% 的数据:1≤P,Q≤10;
100% 的数据:1≤P,Q≤1018

分析:因为每个电阻是1欧

    串联  p/q >> (p+q)/q;

    并联  p/q >> p/(p+q);

因此此题可以倒着思考 读入q p

q>p  q-np

q<p  p-nq

q==p  得解

辗转相除

代码

#include<cmath>#include<cstdio>#include<cstdlib>#include<algorithm>#include<iostream>#include<cstring>using namespace std;long long p,q;long long read(){long long k=0,f=1;char c=getchar();while(c>'9'||c<'0') {if(c=='-') f=-1; c=getchar();}while(c>='0'&&c<='9') {k=k*10+(c-'0'); c=getchar();}return k*f;}int main(){//、、freopen("resistance.in","r",stdin);//freopen("resistance.out","w",stdout);long long i,j,k;p=read();q=read();if(p==q) {cout<<"1";return 0;}long long ans=0;while(true){if(p>q)  {  ans+=p/q;  p=p%q;  if(p==0) break;  }else  {  ans+=q/p;  q=q%p;  if(q==0) break;  }  }cout<<ans;return 0;}


0 0
原创粉丝点击