思路:
对于输入的数据分成 分子 分母 两部分 并求 所有的分母的最小公倍数 分子累加求和
最后判断输出即可
PS:我认为本题对输出数据的要求有问题
例如测试数据
3
-1/3 -2/5 -3/4
程序输出结果为
-1 29/-60
#include<iostream>
#include<cstdio>
using namespace std;
long long GCD(long long a, long long b)
{
if(b==0) return a;
else
return GCD(b,a%b);
}
long long LCM(long long a, long long b)
{
return a/GCD(a,b)*b;
}
long long a[101],b[101];
int main()
{
int N;
scanf("%d", &N);
for(int i=0; i<N; i++)
{
scanf("%lld/%lld", &a[i], &b[i]);
}
long long deno=1, nume=0;
for(int i=0; i<N; i++)
deno=LCM(deno, b[i]);
for(int i=0; i<N; i++)
nume+=deno/b[i]*a[i];
long long t=GCD(nume, deno);
nume/=t;
deno/=t;
if(nume==0)
printf("0\n");
else if(nume/deno && nume%deno)
printf("%lld %lld/%lld\n", nume/deno, nume%deno, deno);
else if(nume/deno)
printf("%lld\n", nume/deno);
else if(nume%deno)
printf("%lld/%lld\n", nume, deno);
return 0;
}