1153 - -Verif Nr Par Cifre Div Imp: Difference between revisions
Andrada378 (talk | contribs) No edit summary |
Andrada378 (talk | contribs) |
||
| Line 9: | Line 9: | ||
== Restricții si precizări: == | == Restricții si precizări: == | ||
elementele şirului sunt numere naturale nenule cu cel mult 9 cifre | * 1 ≤ n ≤ 100 | ||
* elementele şirului sunt numere naturale nenule cu cel mult 9 cifre | |||
=== Exemplu === | === Exemplu === | ||
| Line 27: | Line 27: | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
def citire(): | def citire(): | ||
n = int(input()) | n = 0 | ||
v = [int(input()) | while n < 1 or n > 100: | ||
try: | |||
n = int(input("Introduceti un numar intreg intre 1 si 100 inclusiv: ")) | |||
if n < 1 or n > 100: | |||
print("Numarul introdus nu este in intervalul dorit. Incercati din nou.") | |||
except ValueError: | |||
print("Introduceti un numar intreg valid.") | |||
v = [0] * n | |||
for i in range(n): | |||
valid_input = False | |||
while not valid_input: | |||
try: | |||
v[i] = int(input(f"Introduceti elementul {i + 1} (un numar natural nenul cu cel mult 9 cifre): ")) | |||
if 0 < v[i] <= 999999999: # Verificare pentru numere naturale nenule cu cel mult 9 cifre | |||
valid_input = True | |||
else: | |||
print("Numarul introdus nu corespunde criteriilor. Incercati din nou.") | |||
except ValueError: | |||
print("Introduceti un numar intreg valid.") | |||
return n, v | return n, v | ||
def nrcif(st, dr, v): | def nrcif(st, dr, v): | ||
| Line 43: | Line 64: | ||
R2 = nrcif(m + 1, dr, v) | R2 = nrcif(m + 1, dr, v) | ||
return R1 and R2 | return R1 and R2 | ||
def main(): | def main(): | ||
| Line 50: | Line 72: | ||
else: | else: | ||
print("NU") | print("NU") | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 15:32, 4 January 2024
Cerința
Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului au număr par de cifre.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.
Date de ieșire
Programul afișează pe ecran mesajul DA, dacă toate elementele şirului au număr par de cifre, respectiv NU în caz contrar.
Restricții si precizări:
- 1 ≤ n ≤ 100
- elementele şirului sunt numere naturale nenule cu cel mult 9 cifre
Exemplu
Date de intrare
5
2820 82 65 1026 84
Date de iesire
DA
Rezolvare
<syntaxhighlight lang="python"> def citire():
n = 0
while n < 1 or n > 100:
try:
n = int(input("Introduceti un numar intreg intre 1 si 100 inclusiv: "))
if n < 1 or n > 100:
print("Numarul introdus nu este in intervalul dorit. Incercati din nou.")
except ValueError:
print("Introduceti un numar intreg valid.")
v = [0] * n
for i in range(n):
valid_input = False
while not valid_input:
try:
v[i] = int(input(f"Introduceti elementul {i + 1} (un numar natural nenul cu cel mult 9 cifre): "))
if 0 < v[i] <= 999999999: # Verificare pentru numere naturale nenule cu cel mult 9 cifre
valid_input = True
else:
print("Numarul introdus nu corespunde criteriilor. Incercati din nou.")
except ValueError:
print("Introduceti un numar intreg valid.")
return n, v
def nrcif(st, dr, v):
if st == dr:
cnt = 1
while v[st] > 9:
v[st] //= 10
cnt += 1
return cnt % 2 == 0
else:
m = (st + dr) // 2
R1 = nrcif(st, m, v)
R2 = nrcif(m + 1, dr, v)
return R1 and R2
def main():
n, v = citire()
if nrcif(0, n - 1, v):
print("DA")
else:
print("NU")
if __name__ == "__main__":
main()
</syntaxhighlight>