0254 - Puteri
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>