Алгоритм выигрыша в этой игре очень простой: каждый раз надо забирать из кучки 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
Begin
writeln('_______________________¶¶¶¶¶¶¶¶¶¶1');
writeln('______________________¶¶¶¶¶¶¶¶¶¶¶¶1');
writeln('____________________¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶');
writeln('__________________¶¶¶_¶¶¶¶____¶¶¶¶¶¶¶¶');
writeln('_________________¶¶__¶¶¶__¶¶¶¶_¶¶¶¶¶¶¶¶');
writeln('________________¶¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
writeln('________________¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
writeln('________________¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
writeln('________________¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
writeln('___________¶____¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶¶_¶¶¶¶¶');
writeln('__________¶_____¶¶¶¶_¶¶¶¶¶¶____¶¶¶_¶¶¶¶¶1');
writeln('¶_________¶_____¶¶¶¶¶_¶¶¶¶¶_____¶¶¶¶¶¶¶¶');
writeln('_¶_______¶1______¶¶¶¶_¶¶¶¶_______¶¶¶¶¶¶1');
writeln('_¶¶______¶¶______¶¶¶¶_¶¶¶¶________¶¶¶¶1');
writeln('__¶_____¶_¶¶_____¶¶¶¶_¶¶¶¶');
writeln('__¶¶____¶__¶_____¶¶¶¶¶_¶¶¶');
writeln('__¶¶¶___¶__¶______¶¶¶¶_¶¶¶¶');
writeln('___¶¶¶¶¶_¶_¶______¶¶¶¶¶_¶¶¶¶');
writeln('___¶¶_¶¶¶¶¶1_______¶¶¶¶¶¶¶¶¶¶1');
writeln('__¶__¶¶¶¶¶¶¶¶1______¶¶¶¶¶¶¶¶¶¶¶1');
writeln('_¶¶_¶¶¶¶_¶¶¶¶¶¶¶1_____¶¶¶¶¶_¶¶¶¶¶');
writeln('_¶¶_0__0_¶¶¶¶¶¶¶¶¶¶¶¶1__¶¶¶¶__¶¶¶1');
writeln('_¶¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶1__¶¶¶¶_¶¶¶¶1');
writeln('_¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶_¶¶¶1');
writeln('__¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶_¶¶¶¶¶_¶¶¶1');
writeln('___¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶¶1');
writeln('____¶¶¶_¶____¶¶¶¶¶¶¶¶¶_¶¶¶¶¶__¶¶¶¶¶_¶¶¶1');
writeln('_______¶¶¶¶¶¶___¶¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
writeln('_____¶_¶¶¶¶¶¶¶¶¶_¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
writeln('___1¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
writeln('__1¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
writeln('__1¶¶¶¶¶_____¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
writeln('__1¶¶¶¶¶_¶¶¶¶_¶¶¶¶__¶¶¶¶¶¶¶¶¶¶_¶¶¶_¶¶¶1');
writeln('___1¶¶¶_¶¶¶¶¶¶____¶¶¶¶¶¶¶¶¶_¶¶_¶¶_¶¶¶¶1');
writeln('_____¶_¶¶¶¶¶_¶¶¶¶¶¶¶_¶¶¶¶¶¶¶_¶_¶¶_¶¶¶1');
writeln('_______¶¶¶¶¶_¶¶¶¶¶¶¶¶_¶¶¶¶¶¶_¶_¶¶_¶¶1');
writeln('________¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶_¶¶¶¶1');
writeln('__________¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶1');
writeln('___¶¶¶¶¶¶¶¶¶¶¶¶____¶¶¶¶___¶¶¶___¶¶¶¶¶');
writeln('__¶¶______¶¶¶¶¶¶¶¶¶¶¶____¶_¶¶¶¶¶¶¶¶');
writeln('_¶¶____¶¶¶______________¶¶¶¶¶¶¶¶');
writeln('_¶___¶¶¶¶_¶¶___________¶¶');
writeln('¶___¶¶¶¶_¶¶¶¶¶_______¶¶');
writeln('____¶¶¶¶_¶¶¶¶¶________1¶¶');
writeln('____¶¶¶¶_¶¶¶¶¶¶_____¶¶¶_¶¶');
writeln('____¶¶¶¶_¶¶¶¶¶_____¶¶¶¶¶_¶¶');
writeln('____¶¶¶¶¶_¶¶¶¶_____¶¶¶¶¶_¶¶');
writeln('____¶¶¶¶¶_¶¶¶¶_____¶¶¶¶¶¶_¶¶');
writeln('_____¶¶¶¶_¶¶¶______¶¶¶¶¶¶_¶¶');
writeln('______¶¶¶¶_¶¶______¶¶¶¶¶¶¶_¶');
writeln('________¶¶¶¶________¶¶¶¶¶¶_¶');
writeln('_________¶¶¶__________1¶¶¶¶¶');
writeln('__________¶¶_____________1¶¶');
writeln('___________¶_______________¶');
writeln('____________¶_______________¶');
end.
IP адрес сети - <span>224.23.240.0 (Соответственно DFBH)
</span><span>Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию подразрядной конъюкции.
Например, в случае более сложной маски</span>:
IP-адрес:<span> 11000000 10101000 00000001 00000010 (192.168.1.2)
Маска подсети: 11111111 11111111 11111110 00000000 (255.255.254.0)
Адрес сети: 11000000 10101000 00000000 00000000 (192.168.0.0)</span>