М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

На столе лежат карточки с числами от 1 до 9. Двое играют в игру. За один ход берётся одна карточка. Выигрывает тот, у кого есть три карточки с общей суммой 15. Кто выигрывает при правильной игре?

👇
Ответ:
ЗиА11
ЗиА11
29.04.2023

игра сводится к ничьей

Объяснение:

Рассмотрим различные комбинации получения числа 15:

9 + 5 + 19 + 4 + 28 + 6 + 18 + 5 + 28 + 4 + 37 + 6 + 27 + 5 + 36 + 5 + 4

Здесь представлены все возможные комбинации без учёта порядка следования. Когда игрок делает первый ход, у него есть как минимум две стратегии, по которым он может получить число 15 (это следует из того, что каждое число встречается хотя бы 2 раза). При этом однозначно стратегия определяется вторым ходом (всегда найдётся ровно одна комбинация, содержащая два определённых числа).

Если игрок 2 (II) будет пытаться мешать игроку 1 (I), это приведёт к ничьей: пусть I выбрал некоторое число. Тогда II может ограничить выбор I. После второго хода I II забирает число, необходимое для получения 15. Тогда I делает то же самое (так как стратегия II определилась), оба проиграли. Этот исход получается, если I будет мешать II.

Если II не будет мешать I (и наоборот), это так же приведёт к ничьей, но с другим исходом — оба выиграют.

4,7(47 оценок)
Открыть все ответы
Ответ:
Линда133
Линда133
29.04.2023

// PascalABC.NET 3.6.3

uses School;

function Divizors(n: integer): List<integer>;

begin

 var L := new List<integer>;

 L.Add(1);

 L.Add(n);

 if n > 3 then

   begin

   var k := 2;

   while (k * k <= n) and (k < 46341) do

   begin

     if n mod k = 0 then

     begin

       var t := n div k;

       L.Add(k);

       if k < t then L.Add(t)

       else break

     end;  

     Inc(k)

   end;

   L.Sort;

 end;

 Result := L

end;

begin

 // 1

 if ReadInteger.IsPrime then Println('YES')

 else Println('NO');

 // 2

 ReadInteger.Factorize.First.Println;

 // 3

 var a := Divizors(ReadInteger);

 Print(a.Count, a.Sum)

end.

4,4(49 оценок)
Ответ:
csnoleg
csnoleg
29.04.2023
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var fn:='MtFile.bin';
  var n:=ReadInteger;
  var f:file of integer;
  var s:=SeqRandom(n,-3000,8000); // последовательность не хранится
  Rewrite(f,fn);
  foreach var m in s do Write(f,m);
  f.Close; // файл создан и закрыт
  Reset(f,fn);
  var b:integer; // буфер
  while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
  Seek(f,0); // стали в начало файла
  Read(f,b);
  var iOdd:=0;
  while not Eof(f) and b.IsEven do
  begin Read(f,b); iOdd+=1 end;
  if Eof(f) and b.IsEven then
    begin Writeln('Нет нечетных компонентов'); exit end;
  var (bb,iEven):=(b,n);
  repeat
    iEven-=1; Seek(f,iEven); Read(f,b)
  until (iEven=1) or b.IsEven;
  if b.IsOdd then begin Writeln('Нет четных компонентов'); exit end;
  Seek(f,iEven); Write(f,bb);
  Seek(f,iOdd); Write(f,b);
  Seek(f,0);
  while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
  f.Close
end.

Пример
10
3166 6355 3596 6926 1266 6143 7401 7624 1402 -627
3166 1402 3596 6926 1266 6143 7401 7624 6355 -627
4,5(5 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ