По каждой из трех задач выполнить два задания:
1) определить тип комбинаторной задачи;
2) выполнить вычисления по соответствующей формуле.
1.Сколько пятибуквенных кодов можно составить, если использовать только буквы слова КВАНТ?
2. Сколько пятибуквенных кодов можно составить, если использовать только буквы слова АТАКА?
3. Необходимо приобрести блокноты для 8 участников совещания. Сколько возможно различных решений, если в отделе канцтоваров имеются блокноты трех видов?
// Внимание! Если программа не работает, обновите версию!
begin
var n,p:integer;
var s:string;
for var a:=1 to 9 do
for var b:=0 to 9 do
for var c:=0 to 9 do begin
n:=100*a+10*b+c;
s:=(n*n).ToString.Right(3);
p:=Pos(a.ToString,s);
if p>0 then begin
Delete(s,p,1);
p:=Pos(b.ToString,s);
if p>0 then begin
Delete(s,p,1);
if s=c.ToString then Write(n,'(',n*n,')',' ')
end
end
end
end.
Результат
205(42025) 376(141376) 421(177241) 625(390625) 963(927369)
Предлагаемое в условии число представляет собой десятичную дробь, т.е. имеет целую и дробную части. Для целой части незначащими будут левые нули и мы будем искать их в первой тетраде. Для дробной части незначащие нули - последние и мы будем их искать в последней тетраде.
Первая тетрада - представление 1(16)=0001(2). Левые три нуля незначащие и их удаляем, остается 1. Последняя тетрада - представление Е(16)=1110(2). Тут один незначащий ноль - правый, остается 111.. Остальные тетрады переписываем без изменения.
12АС,6Е(16)=1 0010 1010 1100 , 0110 111 (2)
Считаем количество нулей в записи: 9. Это и есть ответ.
Комментарии Отметить нарушение