Ice Cream Balls (Codeforces 1862D)
Tags: Math, combinatorics

Tema decided to improve his ice cream making skills. He has already learned how to make ice cream in a cone using exactly two balls.Before his ice cream obsession, Tema was interested in mathematics. Therefore, he is curious about the minimum number of balls he needs to have in order to make exactly $$$n$$$ different types of ice cream.There are plenty possible ice cream flavours: $$$1, 2, 3, \dots$$$. Tema can make two-balls ice cream with any flavours (probably the same).Two ice creams are considered different if their sets of ball flavours are different. For example, $$$\{1, 2\} = \{2, 1\}$$$, but $$$\{1, 1\} \neq \{1, 2\}$$$.For example, having the following ice cream balls: $$$\{1, 1, 2\}$$$, Tema can make only two types of ice cream: $$$\{1, 1\}$$$ and $$$\{1, 2\}$$$.Note, that Tema do not need to make all the ice cream cones at the same time. This means that he making ice cream cones independently. Also in order to make a following cone $$$\{x, x\}$$$ for some $$$x$$$, Tema needs at least $$$2$$$ balls of type $$$x$$$.Help Tema answer this question. It can be shown that answer always exist.

Input: Each test consists of multiple test cases. The first line of input contains a single integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases. Then follows the description of the test cases.The first line of each test case contains a single integer $$$n$$$ ($$$1 \le n \le 10^{18}$$$) — the number of ice cream types that Tema wants to make.

Output: For each test case, output a single integer — the minimum number of balls Tema needs to buy.

Note: In the first sample, it is enough to have following balls types: $$$\{1, 1\}$$$. Note, that set $$$\{1\}$$$ if not enough since we need at least $$$2$$$ balls of a type $$$1$$$ in order to make such cone $$$\{1, 1\}$$$.In the second sample, it is not possible to make it with $$$2$$$ balls, but it can be done with these balls: $$$\{1, 2, 3\}$$$.In the third sample, $$$\{1, 2, 3, 4\}$$$ is optimal answer, so we can get following ice cream cones: $$$\{1, 2\}$$$, $$$\{1, 3\}$$$, $$$\{1, 4\}$$$, $$$\{2, 3\}$$$, $$$\{2, 4\}$$$, $$$\{3, 4\}$$$.

Sample Inputs:
5
1
3
6
179
1000000000000000000

Sample Outputs:
2
3
4
27
2648956421

Solution (Python):
tm = int(input())
ans = [''] * tm
for t in range(tm):
    n = int(input())
    if n <= 1:
        ans[t] = '2'
        continue
    res = int((2 * n + 0.25) ** 0.5 + 0.500001)
    if n - res * (res - 1) // 2 < 0:
        res -= 1
    res += n - res * (res - 1) // 2
    ans[t] = str(res)
print('\n'.join(ans))

Solution (Python):
import sys
input = sys.stdin.readline
from math import isqrt
t = 1
t = int(input())
for i in range(t):
    n = int(input())
    val = (1 + isqrt(1 + 8 * n)) // 2
    ans = val + max(0, n - val * (val - 1) // 2)
    print(ans)

Solution (Python):
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
    n = int(input())
    if n == 1:
        print(2)
    else:
        for i in range(int((2 * n) ** 0.5) + 1, -1, -1):
            if i * (i - 1) // 2 == n:
                print(i)
                break
            if i * (i - 1) // 2 < n < (i + 1) * i // 2:
                print(i + n - i * (i - 1) // 2)
                break