Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень, добавить в кучу четыре камня, или увеличить количество камней в куче в 2 раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 19 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 52. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 52 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 51.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
1+2+3+4+5+6+7+8+9+10+11+12=78
78:2=39
Делим так, чтобы в обеих частях сумма чисел была 39. Для этого линия раздела должна проходить между 3 и 4, а также между 9 и 10. В одной половине 10+11+12+1+2+3=39 и в другой 4+5+6+7+8+9=39
Разложим 78 на простые множители:
78 | 2
39 | 3
13 | 13
1
Так как на циферблате всего 12 чисел, получаем, что его ещё можно разделить на 3 и на 6 частей, чтобы суммы чисел в частях были равны:
78:3=26 (11+12+1+2=26, 9+10+3+4=26, 5+6+7+8=26)
78:6=13 (12+1=13, 11+2=13,10+3=13, 9+4=13, 8+5=13, 7+6=13)
Массив данных о стоимости товаров зададим в виде целочисленных констант
program primer_1;
const a: array[1..12] of integer = (170, 180, 25, 36, 750, 1, 45, 28, 39, 10, 11, 58);
i,min,k: integer;
begin
min:=a[1];
for i:=2 to 12 do if a[i]<min then
begin
min:=a[i];
k:=i;
write('минимальная стоимость ', min, ' индекс' ,k)
end.
Или скорее всего этот вариант
program primer_1;
var a: array[1..12] of integer;
i, min, k: integer;
begin
for i:=1 to 12 do read(a[i]);{Ввод стоимостей товаров}
min:=a[1];
k:=0;
for i:=2 to 12 do
if a[i]<min
then
begin
min:=a[i];
k:=i;
end;
write('мин. сто-мость ', min, ' индекс ' ,k)
end.