这题看起来应该是gcd+lcm,但是不用lcm也能过。
还是记录下lcm的代码吧。
int lcm(int a, int b)
{
return a / gcd(a, b) * b;
}
本题代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
long x, y;
int gcd(ll a, ll b){
return b == 0 ? a : gcd(b, a%b);
}
void reduce(){
ll div = gcd(abs(x),y);
x /= div;
y /= div;
}
void ADD(ll a, ll b){
if(x == y && x == 0){
x = a;
y = b;
if(x != 0)
reduce();
return;
}
if(y == b) x += a;
else{
x = x*b + a*y;
y *= b;
}
if(x != 0)
reduce();
}
int main(){
scanf("%d",&n);
x = y = 0;
ll a, b;
for(int i = 0; i < n; ++i){
scanf("%lld/%lld",&a,&b);
ADD(a,b);
}
if(x == 0) printf("0");
else if(abs(x) > y){
if(abs(x) % y == 0) printf("%lld",x / y);
else{
printf("%lld %lld/%lld",x / y, abs(x) % y, y);
}
}
else{
printf("%lld/%lld",x,y);
}
return 0;
}