Два игрока играют в следующую игру. Перед ними лежит две кучи камней, в первой из которых 1 камень, а во второй – 2 камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди. Ход игрока состоит в том, что игрок или увеличивает в 3 раза число камней в какой-то куче, или добавляет 3 камня в какую-то кучу. Выигрывает игрок , после хода которого общее число камней в двух кучах становится не менее 17 . Кто выигрывает при безошибочной игре обоих игроков – игрок, делающий первый ход, или игрок , делающий второй ход? Каким должен быть первый ход выигрывающего игрока? ответ обоснуйте.
program numsum;
uses
SysUtils;
var
n, i, sn: Integer;
s: string;
begin
Write ('Введите четырехзначное число: ');
ReadLn (n);
n := Abs (n);
if (n > 9999) or (n < 1000) then begin
WriteLn ('Введенное число не четырехзначное');
ReadLn;
Exit;
end;
s := IntToStr (n);
sn := 0;
for i := 1 to Length (s) do
sn := sn + StrToInt (s [i]);
WriteLn ('Сумма цифр числа = ', sn);
if sn mod 5 = 0 then
WriteLn ('Сумма цифр делится на 5')
else
WriteLn ('Сумма цифр не делится на 5');
ReadLn;
end.
===== PascalABC.NET =====
procedure DateNum(s1: string; var s2: string);
begin
s1 := s1.MatchValue('\d{1,2}\s\w{3,}\s\d{1,4}\sгода');
if s1.Length > 0 then
begin
var aw := s1.ToWords;
s2 := aw[0] + '.';
var m := Arr('января', 'февраля', 'марта', 'апреля',
'мая', 'июня', 'июля', 'августа', 'сентября',
'октября', 'ноября', 'декабря');
var i := m.FindIndex(w -> w = aw[1]);
if i >= 0 then
s2 += (i + 1).ToString + '.' + aw[2]
else s2 := ''
end
else
s2 := ''
end;
begin
var s1 := 'Сегодня 12 декабря 2019 года, четверг';
var s2: string;
DateNum(s1, s2);
if s2.Length > 0 then
Println(s2)
else
Println('Дата записана некорректно')
end.