#include<stdio.h>
long long gys(long long a,long long b)//求最大公约数,且避免分子a=0的情况
{
if(a == 0)
return 0;
else
return (b == 0) ? a : gys(b, a % b);
}
int main(){
int N;
long long gbs;//最小公倍数
long long a,b,c,d;
int i = 1;
scanf("%d",&N);
scanf("%lld/%lld",&a,&b);
int t0 = gys(a,b);
if(a)//在时刻化成最简分数,避免n=1,然后直接输出
{
a /= t0;
b /= t0;
}
while(i < N)
{
scanf("%lld/%lld",&c,&d);
gbs= b / gys(b,d) * d;
a = a * gbs / b + c * gbs / d;
b = gbs;
int t0 = gys(a,b);
if(t0 != 0)
{
a = a / t0;
b = b / t0;
}
i++;
}
if(a && a/b == 0)
printf("%lld/%lld\n",a%b,b);// 整数部分为0 且 a不为 0
else if(a%b == 0)
printf("%lld\n",a/b);// 小数部分为0
else
printf("%lld %lld/%lld\n",a/b,a%b,b);
return 0;
}
PTA - L1-009 N个数求和
最新推荐文章于 2024-03-15 22:42:32 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)