Medeea este elevă în clasa a V-a. Profesorul ei de matematică, domnul X, le-a arătat la oră cum se transformă o fracție din fracție zecimală în fracție ordinară. Totuși, Medeea vorbind cu colega ei în timpul predării, când a ajuns acasă a realizat că nu știe cum să transforme fracția din temă. Medeea vă roagă să o ajutați să rezolve tema transformând fracția zecimală primită în fracție ordinară şi să o aduceți la forma ireductibilă.
Cerința
Medeea vă roagă să o ajutați să rezolve tema transformând fracția zecimală primită în fracție ordinară şi să o aduceți la forma ireductibilă.
Date de intrare
Fişierul de intrare dec2ord.in conține pe prima linie partea întreaga a numărului, pe a doua linie se află partea zecimală neperiodică, iar pe a treia partea periodică.
Date de ieșire
Fişierul de ieşire dec2ord.out conține pe o singură linie o fracție ordinară ireductibilă de forma numărător/numitor.
Restricții și precizări
- Fiecare parte are maximum
5cifre - Se garantează că fracția dată are cel puțin o zecimală
- Dacă fracția nu are parte periodică sau zecimală neperiodică, pe linia aferentă se va afla
-1. - Pentru
70%din teste fracțiile nu au perioadă
Exemplu
dec2ord.out
125 9 6
dec2ord.out
3779/30
Explicație
125,9(6) = 3779/30.
#include <bits/stdc++.h>
using namespace std;
ifstream cin("dec2ord.in");
ofstream cout("dec2ord.out");
int main()
{
int n , z , per;
cin >> n >> z >> per;
if(z==-1 && per==-1) cout << n;
else if(per==-1 && z!=-1)
{
int p = 1 , cz = z;
while(cz)
{
p*=10;
cz/=10;
}
int a=n*p+z;
int b=p;
while(b)
{
int r=a%b;
a=b;
b=r;
}
cout << (n*p+z)/a << '/' << p/a;
}
else if(z==-1 && per!=-1)
{
int cper=per;
int p=1;
while(cper)
{
cper/=10;
p*=10;
}
int a=n*p+per-n;
int b=p-1;
while(b)
{
int r=a%b;
a=b;
b=r;
}
cout << (n*p+per-n)/a << '/' << (p-1)/a;
}
else if(z!=-1 && per!=-1)
{
long long int p = 1 , p1 = 1 , cz = z , cper = per;
while(cz)
{
p*=10;
cz/=10;
}
while(cper)
{
p1*=10;
cper/=10;
}
long long int q=n*p+z;
long long int a=q*p1+per-q;
long long int b=(p1-1)*p;
while(b)
{
long long int r=a%b;
a=b;
b=r;
}
cout << 1LL * (q*p1+per-q)/a << '/' << 1LL * ((p1-1)*p)/a;
}
}