1240 - Ab3
Cerința
Să se determine pentru n numere a valoarea b maximă astfel încât b3 + b ≤ a.
Date de intrare
Datele de intrare conțin pe prima linie numărul n, iar pe următoarele n linii câte un număr a.
Date de ieșire
datele de ieșire vor conține n linii cu câte un număr fiecare, răspunsul la fiecare întrebare.
Restricții și precizări
- 1 ≤ n ≤ 100.000
- 0 ≤ a ≤ 1018
Exemple
Intrare
5 1 9 36 27 89
Ieșire
0 1 3 2 4
Explicație
13 + 1 = 2 23 + 2 = 10 33 + 3 = 30 43 + 4 = 68 53 + 5 = 130
Rezolvare
<syntaxhighlight lang="python"> def validate_input(n, values):
if n < 1 or n > 100000:
return False
for value in values:
if value < 0 or value > 10**18:
return False
return True
def solve_problem(n, values):
st = 1 << 19
results = []
for i in range(n):
a = values[i]
b = 0
for step in range(st, 0, -1):
if (b + step) * (b + step) * (b + step) + (b + step) <= a:
b += step
results.append(str(b))
return results
def main():
n = int(input())
values = []
for i in range(n):
values.append(int(input()))
if validate_input(n, values):
results = solve_problem(n, values)
for result in results:
print(result)
if __name__ == '__main__':
main()
</syntaxhighlight>