Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) два камня или увеличить количество камней в куче в два раза. Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 59. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, при которой в кучах будет 59 или больше камней. В начальный момент в первой куче было 5 камней, во второй куче – S камней; 1 ≤ S ≤ 53. Задание 19.
Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.
Задание 20.
Найдите минимальное значение S, при котором у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Задание 21
Найдите два значения S, при которых одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Найденные значения запишите в ответе в порядке возрастания.
var a, n, b, i, p,s, m:integer;
c:real;
begin
read (n);
a:=n;
b:=0;
c:=0;
p:=1;
while a <> 0 do
begin
a:=a div 10;
b:=b+1;
end;
while b <> 0 do
begin
p:=1;
for m:=1 to b do
p:=p*10;
s:=(n mod p) div (p div 10);
c:=c+s;
end;
b:=b-1;
end;
writeln (c);
end.
program lol (input, output);
var I, a:integer;
begin
a:=0;
for I:=31 to 55 do
begin
if (i mod 2) <> 0 then
a:=a+I;
end;
writeln (a);
end.
var a, b, c, s, I:integer;
begin
read (a, b);
if a<b then
begin
c:=a;
a:=b;
b:=c;
end;
c:=a;
while c > 0 do
begin
while c >= b do
begin
c:=a-b;
if c > 0 then
s:=c;
a:=c;
end;
a:=b;
b:=c;
end;
writeln (s);
end.
program lol (input, output);
var m, n, prod: word;
begin
readln(m, n);
prod := m * n;
while m <> n do
begin
if m > n then
begin
m := m - n
end
else
begin
n := n - m
end
end;
writeln(prod div m)
end.
program lol (input, output);
var a, b, c, e:Integer;
d:real;
begin
read (a, b);
d:=a/b;
c:=trunc(d);
e:=a-(b*c);
writeln ('Частное: ',c);
writeln ('Остаток: ',e);
end.