0254 - Puteri: Difference between revisions
Paul Ungur (talk | contribs) Pagină nouă: ==Cerinţa== Se dau <span style=“color: red”> n</span> perechi de numere naturale <span style=“color: red”> a</span>, <span style=“color: red”> b</span>. Să se determine pentru fiecare pereche, dacă există, cea mai mare putere a lui <span style=“color: red”> 2</span> din intervalul închis determinat de <span style=“color: red”> a</span> şi <span style=“color: red”> b</span>. ==Date de intrare== Programul citeşte de la tastatură numărul <span s... |
Paul Ungur (talk | contribs) No edit summary |
||
Line 27: | Line 27: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | 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 | return True | ||
def | def puteri(n, a, b): | ||
for i in range(n): | 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: | else: | ||
print("Date de intrare invalide") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 16:19, 26 April 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>