解题思路
:
第一步
:定义一个求最大公约数函数
(方便约分
)
第二步
:先输入一个分数
,对分子分母进行约分
第三步
:使用循环输入剩余的分数
,并进行处理
处理分母
:lcp
=b
*d
/gcd(b
,d
);
处理分子
:a
=a
*lcp
/b
+c
*lcp
/d
;
第四步
:分三种情况输出结果
情况一
:只有分数
情况二
:只有整数
情况三
:带分数
#include<stdio.h>
typedef long long ll
;
ll
gcd(ll a
,ll b
)
{
return b
==0?a
:gcd(b
,a
%b
);
}
int main()
{
int n
,i
=1;
ll lcp
,a
,b
,c
,d
;
scanf("%d",&n
);
scanf("%lld/%lld",&a
,&b
);
int t
=gcd(a
,b
);
if(a
)
{
a
/=t
;
b
/=t
;
}
while(i
<n
)
{
scanf("%lld/%lld",&c
,&d
);
lcp
=b
/gcd(b
,d
)*d
;
a
=a
*lcp
/b
+c
*lcp
/d
;
b
=lcp
;
int t
=gcd(a
,b
);
if(t
)
{
a
/=t
;
b
/=t
;
}
i
++;
}
if(a
&&a
/b
==0)
printf("%lld/%lld",a
%b
,b
);
else if(a
%b
==0)
printf("%lld\n",a
/b
);
else
printf("%lld %lld/%lld\n",a
/b
,a
%b
,b
);
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-3510.html