Алгоритм выигрыша в этой игре очень простой: каждый раз надо забирать из кучки M+1 камешек. Следовательно, первым ходом надо забрать количество камешков, равное остатку от целочисленного деления N на М+1, а затем в каждый последующий ход забирать столько камешков, чтобы оставшееся их число было кратно M+1.
Ниже приведено решение на языке Borland Pascal 7.01
uses Crt;
var
N,M,k:integer;
begin
ClrScr;
Write('N,M='); Read(N,M);
k:=N mod (M+1);
Writeln(k);
ReadKey
end.
Тестовое решение:
N,M=7 4
2
<h3>PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var n := ReadlnInteger('N=');
var R := new integer[n];
repeat
var a := ReadlnString.ToCharArray;
if a.Length <> N then break;
if a.Where(c -> c = '+').Count = 1 then
Inc(R[a.IndexOf('+')])
until False;
R.Transform(t -> t >= 0.07 * N ? 1 : 0);
R.Numerate.Where(t -> t[1] = 1).Select(t -> t[0]).Println
end.
<h3>Пример</h3>
(окончание ввода - строка длины отличной от N)
N= 5
-+---
--+--
-+---
+----
-+---
--+--
-+---
+----
----+
-+---
1 2 3 5
<span>1. Если это Паскаль, то каждый оператор должен оканчиваться точкой с запятой. Тут ни один так не оканчивается.
2. Прочие ошибки.
a. В=А - должен быть знак присваивания, т.е. B:=A;
b. S+2=4.25 - должен быть знак присваивания := вместо =
Кроме этого, в левой части оператора присваивания должно быть имя, а не выражение.
c. R=A : B-1.78 - </span><span><span>должен быть знак присваивания := вместо =
Кроме этого, знак ":" не может встречаться в арифметическом выражении.
</span>d. If a then b:=0 - верен, если a имеет тип boolean
e. A:=D:=C - кратное присваивание недопустимо
f. If a=0 then b:=0 - верен, если а имеет числовой тип.</span>
Вот так вот) там во втором "ввод a, b, c" лучше)
100мбит = 12500килобайт.
0.1 / 125 = 0.00008
Ваш ответ: 0,00008.