Чтобы решить эту задачу нам нужно научиться определять, куда выгодно сесть бабочке. Представим, что столбов 10, тогда бабочки сидят на столбах 1, 9, 10. Бабочка, что справа летит на столб между 1 и 9 а именно на 5ый((9-1-1)/2+1 = 4,5, но число столбов нечетное, пожтому мы округляем до большего) Разберёмся с тем, как мы получили число пять, составив формулу. Чтобы узнать, число, находящееся между двумя числами, надо из максимального вычесть минимальное и ещё 1, затем разделить на 2 и прибавить меньшее число. Если ответ получается дробным, то округляем в большую сторону, а если целым, то надо учитывать сторону, с которой совершается ход. (S-F-1)/2+F+D F - первое число S - второе число D - если число целое, то смотрим, с какой стороны летит бабочка. если справа, то = 0, если слева, то = 1, в остальных случаях (когда нечетн.) = 0.
Теперь к самому решению. Нам надо, чтобы ходов было как можно больше, столбы, оказавшиеся с краю от крайних бабочек - выбывают из игры, а значит, что за первый ход нам надо избавиться от минимального количества столбов, тогда выберем такое расположение: 1 2017 2018. Начинает бабочка справа. 1 ход: 1 1008 2017 2 ход: 1008 1513 2017 3 ход: 1008 1260 1513 4 ход: 1260 1387 1513 5 ход: 1260 1323 1387 6 ход: 1323 1355 1387 7 ход: 1323 1339 1355 8 ход: 1339 1347 1355 9 ход: 1339 1343 1347 10 ход: 1343 1345 1347 11 ход: 1343 1344 1345
Есть 2 варианта как ето делается изложить. 1. На самом языке java. 2. На русском языке.
т.к. java незнаю, попробую сделать удобно
мы перебираем массив по одному на сравнение с самым маленьким числом. А число возьмём из массива, с самого начала с первого элемента. То есть min = первый элемент массива если min не меньше чем массив [счётчик цикла], тоист первый, второй и такдалий тогда оно пусть является этим элементом. Если в дальнейшем найдется ещё меньше то min станет на каком шяс значений счетчик. Пробирая так весь массив через цикл в неём окажется самое по счёту где находится в массиве самое маленькое число. код примерно такой
for i = 1 до конца массива с шагом i=i+1 if min > массив[i] тогда min=i; иначе ничего не делаем
(S-F-1)/2+F+D
F - первое число
S - второе число
D - если число целое, то смотрим, с какой стороны летит бабочка. если справа, то = 0, если слева, то = 1, в остальных случаях (когда нечетн.) = 0.
Теперь к самому решению. Нам надо, чтобы ходов было как можно больше, столбы, оказавшиеся с краю от крайних бабочек - выбывают из игры, а значит, что за первый ход нам надо избавиться от минимального количества столбов, тогда выберем такое расположение: 1 2017 2018. Начинает бабочка справа.
1 ход: 1 1008 2017
2 ход: 1008 1513 2017
3 ход: 1008 1260 1513
4 ход: 1260 1387 1513
5 ход: 1260 1323 1387
6 ход: 1323 1355 1387
7 ход: 1323 1339 1355
8 ход: 1339 1347 1355
9 ход: 1339 1343 1347
10 ход: 1343 1345 1347
11 ход: 1343 1344 1345
ответ: 11 ходов.
1. На самом языке java.
2. На русском языке.
т.к. java незнаю, попробую сделать удобно
мы перебираем массив по одному на сравнение с самым маленьким числом. А число возьмём из массива, с самого начала с первого элемента. То есть
min = первый элемент массива
если min не меньше чем массив [счётчик цикла], тоист первый, второй и такдалий тогда оно пусть является этим элементом. Если в дальнейшем найдется ещё меньше то min станет на каком шяс значений счетчик. Пробирая так весь массив через цикл в неём окажется самое по счёту где находится в массиве самое маленькое число.
код примерно такой
for i = 1 до конца массива с шагом i=i+1
if min > массив[i] тогда
min=i;
иначе
ничего не делаем
вывести ("массив",min,"]=",массив[min]);