#include<stdio.h>
#include<math.h>
int main()
{
int c,i;//c输入个数
long a[100],b[100],s=1,sum=0,k;//a分子 b分母 s分母最公数 sum相加后分子和 k提出整数后的分子
scanf("%d",&c);
for(i=0;i<c;i++)
{
scanf("%ld/%ld",&a[i],&b[i]);
if(b[i]>s)//分母比最大公约数大
{
if(b[i]%s==0)//整数倍直接赋值
s=b[i];
else
s=s*b[i];//非倍数关系相乘
}
else if(b[i]<s)//分母比最大公约数小
{
if(s%b[i]==0)//整数倍不管
s=s;
else//无倍数关系相乘
s=s*b[i];
}
}
for(i=0;i<c;i++) sum=sum+a[i]*(s/b[i]);//分子和
if(sum/s!=0) printf("%ld",sum/s);//整数
k=sum%s;//提出后剩余分子
if(sum%s!=0)//存在分子
{
if(sum/s!=0) printf(" ");//存在整数
for(i=k;i>0;i--)//约分
{
if(k%i==0&&s%i==0)
{
k=k/i;
s=s/i;
}
}
printf("%ld/%ld",k,s);
}
if(sum%s==0&&sum/s==0) printf("0");//无分数无整数
}
PTA L1-009 N个数求和 C语言
于 2024-03-21 19:52:20 首次发布