Вася і кулі#4538

Вася і кулі (Розбір)

Якщо — довжина сторони трикутника, то для його повного укладання потрібно

1 + 2 + ... + n = n \cdot (n + 1) / 2

кульок.

Нехай у наявності є кульок. Щоб знайти максимальне можливе , розв'яжемо рівняння

n \cdot (n + 1) / 2 = k

і округлимо невід'ємний корінь вниз до найближчого цілого числа.

Розв'яжемо квадратне рівняння:

n^2 + n - 2k = 0, \\ d = 1 + 8k, n = (-1 + \sqrt{1 + 8k}) / 2

Відповіддю буде значення \lfloor(-1 + \sqrt{1 + 8k}) / 2 \rfloor.

Реалізація алгоритму

Читаємо вхідне значення .

scanf("%d",&k);

Обчислюємо і виводимо відповідь.

n = int((-1 + sqrt(1.0 + 8*k)) / 2.0);
printf("%d\n",n);