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; }