Последовательность, которую вы описываете, является очень известной, с именем треугольные числа последовательность, которая определяется по формуле:
maxpt = (lv * (lv + 1)) / 2
В вашем конкретном случае эта формула дает максимумочков maxpt
вы можете иметь и все еще находиться на уровне lv
.
Но вы хотите обратное этому.Вы хотите знать, с какого уровня lv
вы будете получать заданное количество баллов pt
.Это называется треугольный корень числа (как аналогия с квадратным корнем).
Вы можете напрямую инвертировать формулу через уравнение Бхаскары, но вам нужно будет сделать некоторыехитрости, чтобы исправить базовый индекс.Это дает:
lv = (int)((Math.sqrt(8 * (pt - 1) + 1) - 1) / 2) + 1
Это работает для pt >= 1
.Для pt = 0
просто верните 0, чтобы избежать ошибки с плавающей запятой (квадратный корень из отрицательного числа).
Вы можете наверняка найти более элегантные решения для этого через Интернет .