3307 - Fractie 6
Cerinţa
Se dă un numar n și n perechi de numere naturale numar1 și numar2.Să se determine dacă numar1/numar2 este fracție finită sau periodică, iar dacă este fracție periodică să se determine dacă este fracție periodică simplă sau mixtă.
Date de intrare
Se citește de la tastatură un număr n și apoi n perechi de numere numar1 numar2.
Date de ieşire
Programul afișează pentru fiecare pereche citită, pe câte un rând, mesajul fractie finita, fractie periodica simpla sau fractie periodica mixta în funcție de caz.
Restricții și precizări
- n ∈ Ν
- 1 ⩽ n ⩽ 100
- 1 ⩽ numar1, numar2 ⩽ 1.000.000.000, numere naturale
Exemplu1
- Intrare
- 5
- 2 5
- 7 90
- 90 270
- 50 81000
- 9 3
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- fractie finita
- fractie periodica mixta
- fractie periodica simpla
- fractie periodica mixta
- fractie finita
Exemplu2
- Intrare
- 4
- 5 10
- 65 34
- 88 168
- 91 71
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- fractie finita
- fractie periodica simpla
- fractie periodica simpla
- fractie periodica simpla
Rezolvare
<syntaxhighlight lang="python" line> def validare_n(n):
return 1 <= n <= 100
def validare_numere(numar1, numar2):
return 1 <= numar1 <= 1_000_000_000 and 1 <= numar2 <= 1_000_000_000
def gcd(numar1, numar2):
if numar2 == 0: return numar1
return gcd(numar2, numar1 % numar2)
def fractie(n, numere):
rezultate = [] for i in range(n): numar1, numar2 = numere[i] if not validare_numere(numar1, numar2): print("Datele de intrare nu corespund restrictiilor impuse.") break g = gcd(numar1, numar2) numar2 //= g
twos, fives = 0, 0
while numar2 % 2 == 0: twos += 1 numar2 //= 2
while numar2 % 5 == 0: fives += 1 numar2 //= 5
if numar2 == 1: rezultate.append("fractie finita") elif twos or fives: rezultate.append("fractie periodica mixta") else: rezultate.append("fractie periodica simpla")
if len(rezultate) == n: print("\nDatele de intrare corespund restrictiilor impuse.\n") for r in rezultate: print(r)
if __name__ == '__main__':
n = int(input()) if validare_n(n): numere = [tuple(map(int, input().split())) for _ in range(n)] fractie(n, numere) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>