Возвращаясь со школы, Арман подошел к перекрестку, регулируемому светофором. В уме он быстро составил алгоритм
перехода улицы:
Остановиться;
Посмотреть на сигнал светофора;
Если (горит зеленый), то {дойти до середины; остановиться}
иначе {стоять;}
Посмотреть на сигнал светофора;
Если (горит зеленый), то {идти до конца;}
иначе {стоять;}
К каким неприятным последствиям может привести исполнение этого алгоритма? Напишите правильный алгоритм перехода улицы.
ответ:
* при 12<=S<=28 Паша увеличивает количество камней в 3 раза и выигрывает в 1 ход
** при S=34 и S=35 Паша увеличивает количество на 2 камня и выигрывает в 1 ход
б) У кого из игроков есть выигрышная стратегия при S = 28, 30, 32?
Опишите выигрышные стратегии для этих случаев.
28: у Паши: П*3=84 - победа Паши
30: у Паши: П+2=32 В+2=34 П+2=36 Победа Паши
32: у Вали: П+2=34 В+2=36 Победа Вали
2. У кого из игроков есть выигрышная стратегия при S = 10, 8?
Опишите соответствующие выигрышные стратегии.
10: у Вали: П*3=30 В+2=32 П+2=34 В+2=36 - Победа Вали
П+2=12 В*3=36 - победа Вали
8: у Паши: П+2=10 В+2=12 П*3=36 - Победа Паши
В*3=30 П+2=32 В+2=34 П+2=36 - Победа Паши
В*3=96 - Победа Паши
3. У кого из игроков есть выигрышная стратегия при S = 6?
6: у Вали
Постройте дерево всех партий, возможных при этой выигрышной стратегии (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход, в узлах – количество камней в позиции
см. фото
var num,divisor,i,sum:longint;//описываем переменные типа longintbegin//начало программы write('Vvedite chislo:');//выводим текст readln(num);//считываем число write('Vvedite delitel:');//выводим текст read(divisor);//считываем заданное число(будем использовать при поиске делителей больше заданного) sum:=0;//зануляем переменную(изначально равна нулю, но на всякий случай ;) привет от с++) for i:=1 to num do //цикл от 1 до числа(можно оптимизировать идя до корня из num) begin//начало цикла if num mod i = 0 then//если на очередном шаге остаток от деления числа на i равен нулю begin//начало условия write(i,' ');//выводим делитель sum:=sum+i;//суммируем end;//конец условия end;//конец цикла writeln();//переходим на следующую строку writeln(sum);//выводим сумму for i:=1 to num do//аналогично выше begin if (num mod i = 0) and (i mod 2 = 0) then // если число делитель и делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i mod 2 = 1) then // не делится на 2 begin write(i,' '); end; end; writeln(); for i:=1 to num do begin if (num mod i = 0) and (i>divisor) then // больше заданного числа begin write(i,' '); end; end;end.//конец программы