Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в три раза. Например, имея кучу из 71 камней, за один ход можно получить кучу из 72 или 213 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 57. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 57 или больше камней. В начальный момент в куче было S камней, 1 <= S <= 56.
1. При каких S: 1а) Петя выигрывает первым ходом; 1б) Ваня выигрывает первым ходом?
2. Назовите три значения S, при которых Петя может выиграть своим вторым ходом?
3. При каком S Ваня выигрывает своим первым или вторым ходом?
begin
readln(t);
readln(k);
for j := 0 to 1 do begin
if (j = 1) then writeln();
for i := 0 to 9 do begin
if(j = 0) then begin
mas1[i] := random(100);
write(mas1[i], ' ');
if mas1[i] > t Then mas1[i] := mas1[i] + 4;
end
else
begin
mas2[i] := random(100);
write(mas2[i], ' ');
if mas2[i] > 10 * K Then
mas2[i] := mas2[i] + K;
end;
end;
for i := 0 to 9 do
if (j = 0) then
write(mas1[i])
else
write(mas2[i]);
writeln();
end;
readln();
end.
))
const
n=10;
var
a,b:array[1..n] of integer;
i,k,t:integer;
begin
ClrScr;
Randomize;
for i:=1 to n do begin
a[i]:=Random(50);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n do begin
b[i]:=Random(50);
Write(b[i],' ')
end;
Writeln;
Write('k t='); Read(k,t);
for i:=1 to n do begin
if a[i]>t then a[i]:=a[i]+4;
Write(a[i],' ')
end;
Writeln;
for i:=1 to n do begin
if b[i]>10*k then b[i]:=b[i]+k;
Write(b[i],' ')
end;
Readkey
end.
Тестовое решение:
1 6 23 12 47 1 44 24 6 18
31 30 30 29 0 3 43 32 46 21
k t=2 20
1 6 27 12 51 1 48 28 6 18
33 32 32 31 0 3 45 34 48 23