Se dau n perechi de numere naturale nenule, fiecare reprezentând câte o fracţie. Calculaţi suma celor n fracţii, aducând rezultatul la forma ireductibilă.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale, reprezentând numărătorul şi numitorul unei fracţii.
Date de ieşire
Programul afișează pe ecran numerele P Q, separate prin exact un spaţiu, reprezentând numărătorul şi numitorul fracţiei sumă, adusă la forma ireductibilă.
Restricţii şi precizări
1 ≤ n ≤ 10- numărătorul şi numitorul fiecărei fracţii sunt numere naturale cu cel mult două cifre
Exemplu
Intrare
4 1 3 5 6 1 2 4 2
Ieșire
11 3
#include <bits/stdc++.h>
using namespace std;
int cmmdc(int n,int m)
{
while(m != 0)
{
int r = n % m;
n = m;
m = r;
}
return n;
}
int cmmmc(int n,int m)
{
return n*m/cmmdc(n,m);
}
pair<int,int> v[100];
int main()
{
int n,a,b,c=1,d,s=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a>>b;
c=cmmmc(c,b);
v[i].first=a;
v[i].second=b;
}
for(int i=0;i<n;i++)
{
v[i].first=v[i].first*c/v[i].second;
s+=v[i].first;
}
d=cmmdc(s,c);
s=s/d;
c=c/d;
cout<<s<<' '<<c;
return 0;
}
SOLUTIA 2
#include <iostream>
using namespace std;
int main(){
int n, a, b, p=0, q = 1;
cin >> n;
for(int i=1;i<=n;++i)
{
cin >> a >> b;
p = a * q + b * p;
q = b * q;
int x = p, y = q, r;
while(x % y != 0)
{
r = x % y;
x = y;
y = r;
}
p /= y, q /= y;
}
cout << p << " " << q;
return 0;
}