###### 问题遇到的现象和发生背景
木木有一天有幸来到宇航局面试,然而宇航局出了一个难题,只给木木一大堆1的电
阻,要木木用串联和并联的方式做出给定阻值的电阻。而且要求用尽量少的电阻。
输入
输入数据会有多组数据。每组数据占一行。
每行有两个数字a和b,表示需要构造出阻值为a/b欧姆的电阻。
这里ab有
1<=a,b<=1018
当a,b都等于0输入结束,并且这组数据不需要处理
输出
对于每一组数据,输出只占一行。
每行输出一个数字min,表示最少需要多少个1的电阻可以组合出阻值为a/b欧姆电阻
样例输入
12
21
00
样例输出
2
2
###### 问题相关代码,请勿粘贴截图
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
参考如下:
#include <stdio.h>
int main()
{
int a,b;
int cl,bl; //串联个数、并联个数
int mmin;
double c,d;
while(1)
{
scanf("%d%d",&a,&b);
if(a==0 && b==0)
break;
cl=1018;
bl=1018;
mmin = cl+bl;
for (cl=0;cl<=1018;cl++)
{
for (bl=1;bl<=1018;bl++)
{
c = 1.0/bl; //并联电阻
if( (cl + c == 1.0*a/b) && (cl+bl < mmin) )
mmin = cl+bl;
}
}
printf("%d\n",mmin);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;// namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
int main()//整数数据类型
{
long long a,b,x,tmp;//定义长整型变量
scanf("%I64d%I64d",&a,&b);//输入
tmp=0;//赋初值0
if (a<b) swap(a,b);//转换为假分数形式,即分子大于分母 ;两个互为倒数的阻值 在单位电阻的构成上仅最后一步的串并联不同,故其个数相同
while (b!=0) //b不等于0时
{
tmp+=a/b;//对tmp累加每次循环后的a/b值 ,复合赋值运算符
x=a%b; a=b; b=x;//x为a/b的余数 ,此时分数形式用上一次循环的a,b表示即为(b/(a除以b后的余数)),当a/b为整数即无余数时终止循环
}
printf("%I64d\n",tmp);//64位的长整型整数输出,并换行
return 0;//表示该程序运行结束后,正常退出
}