收获:
考虑特殊情况:
符号为-
分子分母可以约分时,即y=1;(即若分母为1,则只输出分子。)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
//LL gcd(LL a,LL b) //对最大公因数进行查找。
//{
// return b?gcd(b,a%b):a;
//}
int main()
{
cin>>n;
int m=n;
n--;
LL x,y,x1,y1,g;
scanf("%lld/%lld",&x,&y);
while(n--)
{
scanf("%lld/%lld",&x1,&y1);
x = x*y1+x1*y;
y = y*y1;
g = __gcd(x,y);
x = x/g;
y = y/g;
}
y=y*m; //分母*n
g = __gcd(x,y); //最大公约数
int f=1;
if((x>0 && y>0) || (x<0 && y<0)) f=0; //符号相同
x = fabs(x/g),y=fabs(y/g);
if(f && x!=0) printf("-"); //符号不同且x不为0
if(x%y==0) printf("%lld",x); //可以整除,说明x,y均为1
else printf("%lld/%lld\n",x,y);
return 0;
}
题目: