Biletul nr. 1. pentru atestat informatica la programare 2015
Enuntul problemei
Fişierul date.in conţine pe prima linie o valoare naturală nenulă n, iar pe următoarele n linii, separate printr-un spaţiu, câte o pereche de numere naturale nenule reprezentând numărătorul, respectiv, numitorul unei fracţii (2 ≤ n ≤ 10). Să se determine suma acestor fracţii. Numărătorul şi numitorul fracţiei obţinute în forma ireductibilă (valori mai mici sau egale dacât 1000000000) vor fi scrise în fişierul date.out pe prima linie a acestuia separate printr-un spaţiu.
Rezolvarea problemei
#include<fstream.h>
#include<iostream.h>
int cmmdc(int d, int i)
{
if(i= =0)
return d;
else
return cmmdc(i,d%i);
}
int cmmmc(int a,int b)
{
return (a*b)/cmmdc(a,b);
}
int main( )
{fstream fin("date.in",ios::in), fout("date.out",ios::out);
int a,b,c,d,n;
fin>>n;
fin>>a;
fin>>b;
for (int i=2;i<=n;i++)
{
fin>>c;
fin>>d;
a=a*cmmmc(b,d)/b + c*cmmmc(b,d)/d;
b=cmmmc(b,d);
}
for (d=2;d<=a/2;d++) sau fout<<a/cmmdc(a,b); fout<<b/cmmdc(a,b);
{
if (a%d==0)
if (b%d==0)
{
a=a/d;
b=b/d;
Scris de