Олимпиадный тренинг

Задача . C. Увеличение и копирование


Изначально вам дан массив \(a\), состоящий из одного элемента \(1\) (\(a = [1]\)).

За один ход вы можете совершить одно из следующих действий:

  • Увеличить какой-то (единственный) элемент \(a\) на \(1\) (выбрать какое-то \(i\) от \(1\) до текущей длины \(a\) и увеличить \(a_i\) на единицу);
  • Дописать копию какого-то (единственного) элемента \(a\) в конец массива (выбрать какое-то \(i\) от \(1\) до текущей длины \(a\) и добавить \(a_i\) в конец массива).

Например, рассмотрим последовательность из пяти ходов:

  1. Вы берете первый элемент \(a_1\), дописываете его копию в конец массива и получаете \(a = [1, 1]\).
  2. Вы берете первый элемент \(a_1\), увеличиваете его на \(1\) и получаете \(a = [2, 1]\).
  3. Вы берете второй элемент \(a_2\), дописываете его копию в конец массива и получаете \(a = [2, 1, 1]\).
  4. Вы берете первый элемент \(a_1\), дописываете его копию в конец массива и получаете \(a = [2, 1, 1, 2]\).
  5. Вы берете четвертый элемент \(a_4\), увеличиваете его на \(1\) и получаете \(a = [2, 1, 1, 3]\).

Ваша задача — найти минимальное количество ходов, необходимое для того, чтобы получить массив с суммой хотя бы \(n\).

Вам необходимо ответить на \(t\) независимых наборов тестовых данных.

Входные данные

Первая строка входных данных содержит одно целое число \(t\) (\(1 \le t \le 1000\)) — количество наборов тестовых данных. Затем следуют \(t\) наборов тестовых данных.

Единственная строка набора тестовых данных содержит одно целое число \(n\) (\(1 \le n \le 10^9\)) — нижняя граница на сумму массива.

Выходные данные

Выведите ответ на каждый набор тестовых данных: минимальное количество ходов, необходимое для того, чтобы получить массив с суммой хотя бы \(n\).


Примеры
Входные данныеВыходные данные
1 5
1
5
42
1337
1000000000
0
3
11
72
63244

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя