Чтобы расширить комментарий Мэтта Тиммерманса:
Вы знаете, что для n
шагов вам нужно (n * (n + 1))/2
блоков. Вы хотите знать, если дано B
блоков, сколько шагов вы можете создать.
Итак, у вас есть:
(n * (n + 1))/2 = B
(n^2 + n)/2 = B
n^2 + n = 2B
n^2 + n - 2B = 0
Это подозрительно похоже на то, для чего вы будете использовать quadrati c формула .
В этом случае a=1
, b=1
и c=(-2B)
. Подставив числа в формулу:
n = ((-b) + sqrt(b^2 - 4*a*c))/(2*a)
= (-1 + sqrt(1 - 4*1*(-2B)))/(2*a)
= (-1 + sqrt(1 + 8B))/2
= (sqrt(1 + 8B) - 1)/2
Итак, если у вас 5050 блоков, вы получите:
n = (sqrt(1 + 40400) - 1)/2
= (sqrt(40401) - 1)/2
= (201 - 1)/2
= 100
Попробуйте с помощью квадратичного c калькулятора формул . Используйте 1 для значений a и b и замените c отрицательным числом, в два раза превышающим количество блоков, которые вы дали. Таким образом, в приведенном выше примере c будет -10100.
В вашей программе, поскольку у вас не может быть частичного шага, вы хотите усечь результат.