Определите количество шестеричных пятизначных чисел, в записи которых не менее двух цифр 5 и не более трёх нечетных цифр, меньших 4.
Решение. Приведём аналитическое решение Юрия Красильникова.
Если в пятизначном числе не менее двух цифр 5, то в нем никак не может быть более трех иных цифр,в частности, нечетных цифр меньше 4. Поэтому если выполнено условие «не менее двух цифр 5», то условие «не более трёх нечетных цифр, меньших 4» заведомо выполнено и поэтому излишне.
Пусть в нашем числе n пятерок, n>=2.
Если одна из пятерок стоит на первом месте, то число способов, которыми можно расставить n-1 пятерку на 4 места, есть comb(4,n-1) - число сочетаний из 4 по n-1. Остаются 5-n цифр, число способов для них - это 5(5-n). Здесь 2<=n<=5.
Если на первом месте стоит не пятерка (т. е. цифры 1, 2, 3, или 4), то число способов поставить n пятерок на 4 места - comb(4,n). Число способов выбрать первую цифру - 4, а оставшиеся 4-n - 5(4-n).
Таким образом, ответ можно найти с помощью следующей программы:
from math import comb
ans=sum(comb(4,n-1)*5**(5-n) for n in range(2,6))+sum(4*comb(4,n)*5**(4-n) for n in range(2,5))
print(ans)
Приведём решение на языке Python.
from itertools import product as p
k = 0
for n in p('012345', repeat=5):
if n[0] != '0' and n.count('5') >= 2 and n.count('1') + n.count('3')<= 3:
k += 1
print(k)
Приведём решение Юрия Красильникова на языке Python.
from itertools import product
print(len([x for x in product('012345',repeat=5) if x[0]!='0' and x.count('5')>=2]))
Ответ: 1355.
Приведём решение Сергея Донец на языке PascalABC.NET.
begin
'012345'.Cartesian(5) // 6-ричная 5-значных
.Where(s->s[1] <> '0') // Первой цифрой не может быть 0
.Where(s->s.CountOf('5')>=2) //не менее двух цифр 5
.Where(s->(s.CountOf('3')+s.CountOf('1'))<=3) //не более трёх нечетных цифр, меньших 4
.Count.Print;
end.
PDF-версии: 