版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nightmare_ak/article/details/84501509
按照题意模拟即可
#include<cstdio>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{
return b==0?a:gcd(b,a%b);
}
ll lca(ll a,ll b)
{
return a/gcd(a,b)*b;
}
char s[100+5][30];
int main()
{
int n;scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",s[i]);
ll alldown=1,up,down,sum=0;
for(int i=0;i<n;i++)
{
sscanf(s[i],"%lld/%lld",&up,&down);
alldown=lca(down,alldown);
}
for(int i=0;i<n;i++)
{
sscanf(s[i],"%lld/%lld",&up,&down);
sum+=up*(alldown/down);
}
if(sum<0) printf("-"),sum=-sum;
ll lef=sum/alldown;
if(lef) printf("%lld",lef);
sum-=lef*alldown;
if(sum)
{
ll d=gcd(sum,alldown);
if(lef) printf(" ");
printf("%lld/%lld\n",sum/d,alldown/d);
}
else
{
if(!lef) puts("0");
else puts("");
}
return 0;
}