Не могу понять, как с дерева решить : сколько трехбуквенных слов можно составить из букв а,г,ж,ф,я, при условии, что в записи слова не должно быть одинаковых символов. (слово в информатике это любой набор любых символов.)
Если разрисовывать варианты составления слов, то на рисунке получится древовидная структура, со множеством разветвлений (это я показал на рисунке, для первых двух этапов).
Начало- пункт старт.
1) Выбираем первую букву: от пункта старт идут пять ответвлений- по количеству букв, которые можно поставить на первое место в слове (буквы АГЖФЯ -в каждом ответвлении мы выбираем одну из них).
2) Выбираем вторую букву: от каждой буквы первого этапа идут по четыре ответвления (ведь одну букву мы уже использовали, поставив её на первое место, теперь у нас остаётся четыре буквы; в каждом ответвлении мы выбираем одну из них). Получается, у нас было пять начальных вариантов, и каждый из них разветвился ещё на четыре варианта- то есть было пять вариантов, а стало в четыре раза больше (5*4=20 вариантов).
3) Выбираем третью букву: от каждой буквы второго этапа идут по три ответвления. Получается 5*4*3=60 вариантов.
Это и есть число возможных трёхбуквенных слов- 60. Для каждого из этих слов в дереве есть отдельный путь от пункта старт до выбора третьей буквы.
Рисовать всё дерево вариантов не обязательно, ведь оно весьма большое. Достаточно понять принцип, как оно строится, и как посчитать число вариантов.
Программа ищет и выводит все трехбуквенные слова, содержащие русские и/или латинские буквы в обоих регистрах. Слова могут разделяться любым количеством любых символов, кроме символа подчеркивания.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
begin var s:=ReadlnString('Вводите:'); var m:=s.Matches('\b\w{3}\b'); if m.Count>0 then m.Println else Writeln('Нет трехбуквенных слов') end.
Пример: Вводите: Как найти все слова, где букв - три? Как все где три
Биквадратное уравнение имеет вид ax⁴+bx²+c=0 Замена z=y² приводит к уравнению решение которого хорошо известен. Поскольку в задании указан уровень "5-9 классы", варианты с комплексными корнями рассматриваться не будут, т.е. при отрицательном дискриминанте D мы считаем, что корней нет.
var a,b,c,d,z1,z2:real; begin Writeln('Введите коэффициенты биквадратного уравнения по убыванию степеней'); Read(a,b,c); d:=b*b-4*a*c; if d<0 then Writeln('Нет корней') else begin d:=sqrt(d); z1:=(-b-d)/(2*a); z2:=(-b+d)/(2*a); if z1<0 then begin z1:=z2; if z1<0 then Writeln('Нет корней') else Writeln(-sqrt(z1),' ',sqrt(z1)) end else begin Write(-sqrt(z1),' ',sqrt(z1),' '); if z2>=0 then Writeln(-sqrt(z2),' ',sqrt(z2)); Writeln end end end.
Начало- пункт старт.
1) Выбираем первую букву: от пункта старт идут пять ответвлений- по количеству букв, которые можно поставить на первое место в слове (буквы АГЖФЯ -в каждом ответвлении мы выбираем одну из них).
2) Выбираем вторую букву: от каждой буквы первого этапа идут по четыре ответвления (ведь одну букву мы уже использовали, поставив её на первое место, теперь у нас остаётся четыре буквы; в каждом ответвлении мы выбираем одну из них).
Получается, у нас было пять начальных вариантов, и каждый из них разветвился ещё на четыре варианта- то есть было пять вариантов, а стало в четыре раза больше (5*4=20 вариантов).
3) Выбираем третью букву: от каждой буквы второго этапа идут по три ответвления. Получается 5*4*3=60 вариантов.
Это и есть число возможных трёхбуквенных слов- 60.
Для каждого из этих слов в дереве есть отдельный путь от пункта старт до выбора третьей буквы.
Рисовать всё дерево вариантов не обязательно, ведь оно весьма большое. Достаточно понять принцип, как оно строится, и как посчитать число вариантов.