Ребятам уже встречалась подобная задача (см. комментарии к задаче 18). Здесь, так же как и в задаче 18, нужно экономить вершины, т. е. не размещать на одном уровне две одинаковые вершины, имеющие общую предыдущую (или две одинаковые корневые вершины). Исключение из этого правила составляет лишь случай, когда одна из одинаковых вершин является листом, а другая – нет. Например, в мешке V есть слова КИС и КИСА. У этих путей будут две общие вершины – К и И. Однако бусины С этих путей будут разными вершинами дерева.
krasilnikov74
07.02.2020
// PascalABC.NET 3.3, сборка 1625 от 17.01.2018 // Внимание! Если программа не работает, обновите версию!
function IsPrime(Self:integer):boolean; extensionmethod; // является ли число n простым begin if Self<4 then Result:=True else begin var found:=(Self mod 2=0); var p:=3; while (not found) and (sqr(p)<=Self) do begin found:=(Self mod p=0); p+=2 end; Result:=not found end end;
function SumDig(Self:integer):integer; extensionmethod; // возвращает сумму цифр числа n begin var n:=Self; Result:=0; while n>0 do begin Result+=n mod 10; n:=n div 10 end end;
begin 100.To(999).Where(t->t.SumDig.IsPrime).Println end.