思路对了,分母找最小公倍数方法错了,导致超时。
题练少了!!
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 105;
int n;
LL x[N],y[N];
LL gcd(LL a,LL b)
{
return b?gcd(b,a%b):a;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
scanf("%lld/%lld",&x[i],&y[i]);
LL t1 = y[0];
for(int i=1;i<n;i++)
t1 = t1*y[i]/gcd(t1,y[i]);
//找分母最小公倍数
LL sum = 0;
for(int i=0;i<n;i++)
{
x[i] *= t1/y[i];//更新分子
sum += x[i];
y[i] = t1;
}
LL t2 = gcd(sum,t1);//求总相加的最大公约数
sum /= t2,t1/= t2;
LL a = sum/t1,b = sum%t1;
if(a==0&&b!=0) cout<<b<<"/"<<t1;
else if(a==0&&b==0) cout<<0;
else if(a!=0&&b==0) cout<<a;
else if(a!=0&&b!=0)cout<<a<<" "<<b<<"/"<<t1;
return 0;
}
爱了爱了,亲一口