Se dă un numar n și n perechi de numere naturale a și b.Să se determine dacă a/b este fracție finită sau periodică, iar dacă este fracție periodică să se determine dacă este fracție periodică simplă sau mixtă. Ma poate cineva ajuta cu o sursa in C++? Am incercat sa ma folosesc de numere prime ca sa il rezolv dar mereu obtin 20 de puncte.
https://www.pbinfo.ro/probleme/3307/fractie6
Sper din cod să faci concluzii... de apar întrebări, eu sunt aici :))) Succese!
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int n,i,a,b,f2,f5;
int main()
{
cin >> n;
for (i=1; i<=n; i++)
{
cin >> a >> b;
if (a%b==0) cout << "fractie finita";
else
{
while (a%2==0 && b%2==0)
{
a/=2; b/=2;
}
while (a%5==0 && b%5==0)
{
a/=5; b/=5;
}
f2=0;
while (b%2==0)
{
b/=2; ++f2;
}
f5=0;
while (b%5==0)
{
b/=5; ++f5;
}
if (b==1)
{
cout << "fractie finita";
}
else
{
if (a%b==0) cout << "fractie finita";
else
{
if (f2==0 && f5==0) cout << "fractie periodica simpla";
else cout << "fractie periodica mixta";
}
}
}
cout << endl;
}
}
Explicație:
e cod proaspăt de 100p.
-am încercat din start dacă a se divide cu b atunci răspuns ”fr. finita”
- a urmat o simulare a simplificărilor repetate a fracției a/b prin 2, prin 5.
- dacă după aceste simplificări numitorul obținut este 1, atunci ”fr. finită”,
altfel, căutăm (numărăm) dacă noul numitor are factori de 2 și/sau 5.
1) când se obține fr. zecim. simplă
2) fr.zecim.per.simplă
3)fr.zec.per.mixtă