// 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.
Поделитесь своими знаниями, ответьте на вопрос:
На столе лежат карточки с числами от 1 до 9. Двое играют в игру. За один ход берётся одна карточка. Выигрывает тот, у кого есть три карточки с общей суммой 15. Кто выигрывает при правильной игре?
игра сводится к ничьей
Объяснение:
Рассмотрим различные комбинации получения числа 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 (и наоборот), это так же приведёт к ничьей, но с другим исходом — оба выиграют.