Определите количество восьмизначных 15-ричных чисел, в записи которых ровно два нуля и не более четырёх цифр, для записи которых используются буквы.
Приведём аналитическое Юрия Красильникова решение.
Требуется разместить два нуля на двух из семи последних мест в восьмизначном числе (ноль не может стоять на первом месте).
Это 21 вариант (число сочетаний из 7 по 2).
Шесть оставшихся мест мы должны заполнять остальными цифрами (кроме нуля). Всего имеется 146 - 7529536 вариантов.
Из этого множества нужно исключить числа, в которых все шесть цифр с буквенными обозначениями, а также числа, где одна цифра - десятичная, а остальные пять - буквенные.
Чисел из шести цифр с буквенными обозначениями 56 = 15625.
Чисел, в которых одна цифра десятичная, а пять - буквенные, 6 · 9 · 55 = 168750.
Получаем ответ: 21 · (146-56-6 · 9 · 55) = 154248381.
Ответ можно получить с помощью следующей программы на Питоне:
import math
print(math.comb(7,2)*(14**6-5**6-6*9*5**5))
Приведём решение на языке Python.
from itertools import product
count = 0
for i in product ('01a', repeat = 8 ):
s = ''.join(i)
if s[0] != '0' and s.count('0') == 2 and s.count('a') <5:
count += 9**s.count('1') * 5**s.count('a')
print(count)
Ответ:154248381.
Приведём решение Бориса Савельева на языке Python.
from itertools import product
s = product('123456789ABCDE', repeat=6)
count = 0
for i in s:
p = ''.join(i)
if p.count('A') + p.count('B') + p.count('C') + p.count('D') + p.count('E') < 5:
count += 1
print(count * 21) # 21 способ выбрать две позиции для нулей среди 7 цифр (первым ноль быть не может).
Приведём программу Валерия Григорьева на PascalABC:
var
a1, a2 ,a3, a4, a5, a6, a7, a8: integer;
c: integer;
cn: longint;
str: string;
begin
cn := 0;
str := '0123456789xxxxx';
for a1:= 1 to 14 do
for a2:= 0 to 14 do
for a3:= 0 to 14 do
for a4:= 0 to 14 do
for a5:= 0 to 14 do
for a6:= 0 to 14 do
for a7:= 0 to 14 do
for a8:= 0 to 14 do
begin
c := 0;
if (a2 = 0) then c += 1;
if (a3 = 0) then c += 1;
if (a4 = 0) then c += 1;
if (a5 = 0) then c += 1;
if (a6 = 0) then c += 1;
if (a7 = 0) then c += 1;
if (a8 = 0) then c += 1;
if (c = 2) then
begin
c := 0;
if (a1 > 9) then c += 1;
if (a2 > 9) then c += 1;
if (a3 > 9) then c += 1;
if (a4 > 9) then c += 1;
if (a5 > 9) then c += 1;
if (a6 > 9) then c += 1;
if (a7 > 9) then c += 1;
if (a8 > 9) then c += 1;
if (c<=4) then
cn += 1;
end;
end;
writeln;
writeln;
writeln(cn);
end.

