3926 - Alternant 1
Sursa: [1]
Explicație[edit | edit source]
Spunem că un număr natural este alternant dacă cifrele pare alternează cu cele impare. De exemplu, numere alternante sunt 236, 6, 12345678.
Cerinţa[edit | edit source]
Se dă un număr natural. Să se verifice dacă este sau nu alternant.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran mesajul da dacă numarul este alternant sau mesajul nu dacă nu este alternant.
Restricții și precizări[edit | edit source]
- 0 ≤ numar ≤ 1.000.000.000.000.000
Exemplu 1[edit | edit source]
- Intrare
- 265
- Ieșire
- Numărul nu este alternant.
Exemplu 2[edit | edit source]
- Intrare
- 8183
- Ieșire
- Numărul este alternant.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def este_numar_natural(numar):
try: numar_int = int(numar) if numar_int <= 0: return False # Returnăm False dacă numărul este mai mic sau egal cu 0 elif str(numar_int) != numar: return False # Returnăm False dacă conversia la întreg și apoi înapoi la șir nu dă același rezultat else: return True # Returnăm True dacă numărul este un număr natural valid except ValueError: return False # Returnăm False dacă conversia la întreg nu este posibilă
def este_alternant(numar):
cifre = str(numar) paritate = int(cifre[0]) % 2 # Paritatea primei cifre
for i in range(1, len(cifre)): if int(cifre[i]) % 2 == paritate: return False # Returnăm False dacă găsim o cifră cu aceeași paritate ca și cifra anterioară paritate = 1 - paritate # Schimbăm paritatea între 0 și 1
return True # Returnăm True dacă toate cifrele sunt alternante în ceea ce privește paritatea
if __name__ == "__main__":
numar = input("Introduceți un număr natural: ")
if not este_numar_natural(numar): print("Numărul introdus nu este valid.") else: if este_alternant(numar): print("Numărul este alternant.") else: print("Numărul nu este alternant.") print("Datele au fost introduse corect.")
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
numar = input("Introduceți un număr natural: ")
try:
numar_int = int(numar) # Convertim numarul introdus într-un întreg
if numar_int <= 0: print("Numărul introdus nu este un număr natural.") elif str(numar_int) != numar: print("Numărul introdus conține caractere nevalide.") else: cifre = str(numar_int) paritate = int(cifre[0]) % 2 # Paritatea primei cifre
for i in range(1, len(cifre)): if int(cifre[i]) % 2 == paritate: print("Numărul nu este alternant.") break paritate = 1 - paritate # Schimbăm paritatea: 0 devine 1, 1 devine 0
else: print("Numărul este alternant.")
print("Datele sunt introduse corect.")
except ValueError:
print("Numărul introdus nu este valid.")
</syntaxhighlight>