Простые комбинаторные задачи

Простые комбинаторные задачи

Не секрет, что один из важнейших навыков современного программиста – математическое мышление. Именно строгое и формальное мышление позволяет быстро и четко реализовать алгоритм. При этом важен именно аналитический тип мышления, который совершенно не требует глубоких познаний в математике. В действительности вам совсем не обязательно знать и помнить страшные формулы и теоремы, достаточно баловать себя несложными задачами. Вроде таких:

Маша, ее младший брат и еще пятеро друзей должны выстроиться в очередь за шоколадом. Вопрос: сколько вариантов различных очередей возможно?

Сколькими способами из 12 молодых программистов можно выбрать сеньора и мидла.

Сколько различных слов можно составить из букв proglib? А из proglibio?