1240 - Ab3

From Bitnami MediaWiki
Revision as of 15:26, 19 April 2023 by Cata (talk | contribs) (Pagină nouă: ==Cerința== Să se determine pentru n numere a valoarea b maximă astfel încât b<sup>3</sup> + 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 ≤ 10<sup>18</sup> ==Exemple== ===Intrare=== 5 1 9 36 27...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>