解题思路:
第一步:定义一个求最大公约数函数(方便约分)
第二步:先输入一个分数,对分子分母进行约分
第三步:使用循环输入剩余的分数,并进行处理
处理分母: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;
}