1001 - Rotund
Cerinţa[edit | edit source]
Spunem că un număr natural x
este rotund dacă există un număr natural nenul k
, mai mic strict decât numărul de cifre ale lui x
, astfel încât prin permutarea circulară a cifrelor numărului cu k
poziţii la dreapta, să se obţină numărul iniţial x
.
Se dă un şir cu n
elemente, numere naturale. câte elemente din șir sunt rotunde, și care sunt acestea.
Se va defini şi apela subprogramul rotund
care verifică dacă un număr natural, transmis ca parametru, este rotund.
Date de intrare[edit | edit source]
Pe prima linie a fişierului rotundIN.txt
se află numărul n
, iar pe a doua linie n
numere naturale.
Date de ieşire[edit | edit source]
Prima linie a fişierului rotundOUT.txt
va conține numărul de elemente rotunde din șirul dat, iar linia a doua aceste elemente, în ordinea din șirul dat, separate prin exact un spațiu. Dacă în șirul dat nu se află numere rotunde, în fișierul de ieșire se va numai scrie valoarea 0
.
Restricţii şi precizări[edit | edit source]
1 ≤ n ≤ 50
- elementele şirului vor avea cel mult
10
cifre
Exemplul 1[edit | edit source]
rotundIN.txt:
5
12 3232 123 144144 77
rotundOUT.txt:
3
3232 144144 77
Exemplul 2[edit | edit source]
rotundIN.txt:
0
12 3232 123 144144 77
Output consola: Numărul n trebuie să fie între 1 și 50.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def validate_input(n, sir):
# Verificare pentru n if not (1 <= n <= 50): print("Numărul n trebuie să fie între 1 și 50.") return False
# Verificare pentru fiecare element din șir for x in sir: if not (1 <= x <= 999999999): print("Elementele șirului trebuie să fie numere naturale cu cel mult 10 cifre.") return False
return True
def rotund(numar):
str_numar = str(numar) numar_cifre = len(str_numar)
for i in range(1, numar_cifre): permutare = int(str_numar[-i:] + str_numar[:-i]) if permutare == numar: return True
return False
def main():
# Citire date de intrare din fisier with open("rotundIN.txt", "r") as f: n = int(f.readline()) sir = list(map(int, f.readline().split()))
# Verificare validitate input if not validate_input(n, sir): return
# Identificare și afișare elemente rotunde din șir rotunde = [x for x in sir if rotund(x)] numar_rotunde = len(rotunde)
# Scriere rezultat in fisier with open("rotundOUT.txt", "w") as f: f.write(str(numar_rotunde) + "\n") if numar_rotunde > 0: f.write(" ".join(map(str, rotunde)))
if __name__ == "__main__":
main()
</syntaxhighlight>