解题思路:这道题描述的不是很详细,它没说最后输出的整数一定要是正的啊。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
freopen("t.txt","r",stdin);
ll n,a,b;
scanf("%lld",&n);
ll k1,fz,fm;
scanf("%lld/%lld",&a,&b);
n--;
fz=a;
fm=b;
ll tp=gcd(a,b);
fz/=tp;fm/=tp;
ll t;
while(n--)
{
scanf("%lld/%lld",&a,&b);
tp=gcd(a,b);
a/=tp;b/=tp;
fz=fz*b+fm*a;
fm=fm*b;
tp=gcd(fz,fm);
fz/=tp;fm/=tp;
//printf("%lld/%lld\n",fz,fm);
}
if(fm<0) fm=-fm,fz=-fz;
ll z=fz/fm;
fz%=fm;
if(fz==0)
printf("%lld\n",z);
else if(z==0)
{
printf("%lld/%lld\n",fz,fm);
}else
{
if(z<0)
{
z=-z;
if(fz>0)
fz=-fz;
}
printf("%lld %lld/%lld\n",z,fz,fm);
}
return 0;
}