0254 - Puteri: Difference between revisions
Paul Ungur (talk | contribs) No edit summary |
Paul Ungur (talk | contribs) No edit summary |
||
Line 62: | Line 62: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicatie cod:== | |||
Funcția validare(n, a, b) primește trei parametri: n de tip întreg, a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și verifică dacă n este în intervalul [1, 10000], iar valorile din listele a și b sunt în intervalul [0, 999999999]. Dacă toate aceste condiții sunt îndeplinite pentru fiecare pereche de numere, funcția returnează True, altfel returnează False. | |||
Funcția puteri(n, a, b) primește trei parametri: n de tip întreg și a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și calculează cea mai mare putere a lui 2 (p) care este mai mică sau egală cu maximul dintre cele două numere. Apoi, verifică dacă p este mai mare sau egal cu minimul dintre cele două numere. În funcție de această verificare, se afișează p sau 0. | |||
În blocul if __name__ == '__main__':, se citește n de la intrarea standard și se inițializează listele goale a și b. Se citește perechea de numere ai și bi de n ori și se adaugă valorile în listele corespunzătoare. Se validează datele de intrare utilizând funcția validare(n, a, b). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția puteri(n, a, b) și se afișează rezultatele. Altfel, se afișează un mesaj de eroare. | |||
Codul primește datele de intrare de la utilizator, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele. |
Revision as of 17:38, 15 May 2023
Cerinţa
Se dau n perechi de numere naturale a, b. Să se determine pentru fiecare pereche, dacă există, cea mai mare putere a lui 2 din intervalul închis determinat de a şi b.
Date de intrare
Programul citeşte de la tastatură numărul n, apoi n perechi de numere a, b.
Date de ieşire
Programul va afişa pe câte o linie ecranului, pentru fiecare interval dat, cea mai mare putere a lui 2 din interval, sau 0, dacă intervalul nu conţine nici o putere al lui 2.
Restricţii şi precizări
1 ≤ n ≤ 10000 fiecare dintre numerele a şi b au cel mult 9 cifre. intervalele sunt închise
Exemplu:
Date de intrare 3 2 69 20 10 19 25
Date de ieşire 64 16 0
Rezolvare
<syntaxhighlight lang="python" line> def validare(n, a, b):
for i in range(n): if not (1 <= n <= 10_000): return False if not (0 <= a[i] < 1_000_000_000 and 0 <= b[i] < 1_000_000_000): return False return True
def puteri(n, a, b):
for i in range(n): p = 1 while p * 2 <= max(b[i], a[i]): p = p * 2 if p >= min(a[i], b[i]): print(p) else: print(0)
if __name__ == '__main__':
n = int(input()) a, b = [], [] for i in range(n): ai, bi = map(int, input().split()) a.append(ai) b.append(bi)
if validare(n, a, b): print("Date de intrare valide") puteri(n, a, b) else: print("Date de intrare invalide")
</syntaxhighlight>
Explicatie cod:
Funcția validare(n, a, b) primește trei parametri: n de tip întreg, a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și verifică dacă n este în intervalul [1, 10000], iar valorile din listele a și b sunt în intervalul [0, 999999999]. Dacă toate aceste condiții sunt îndeplinite pentru fiecare pereche de numere, funcția returnează True, altfel returnează False. Funcția puteri(n, a, b) primește trei parametri: n de tip întreg și a și b liste de numere întregi. Funcția parcurge fiecare element din listele a și b și calculează cea mai mare putere a lui 2 (p) care este mai mică sau egală cu maximul dintre cele două numere. Apoi, verifică dacă p este mai mare sau egal cu minimul dintre cele două numere. În funcție de această verificare, se afișează p sau 0. În blocul if __name__ == '__main__':, se citește n de la intrarea standard și se inițializează listele goale a și b. Se citește perechea de numere ai și bi de n ori și se adaugă valorile în listele corespunzătoare. Se validează datele de intrare utilizând funcția validare(n, a, b). Dacă datele de intrare sunt valide, se afișează un mesaj de confirmare, se apelează funcția puteri(n, a, b) și se afișează rezultatele. Altfel, se afișează un mesaj de eroare. Codul primește datele de intrare de la utilizator, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele.