Русский
Открыть в Telegram

Ветка 👩‍💻 Задача с кодом. Комбинаторное исследование

6 сообщений · –
P
👩‍💻 Задача с кодом. Комбинаторное исследование Если известно количество уникальных элементов в ряду, сколько есть вариантов их перестановки? Напишите функцию, которая будет принимать целое число n, определять количество возможных перестановок для n уникальных элементов и возвращать количество цифр в числе перестановок. Например, для 5 уникальных элементов существует 120 уникальных вариантов перестановки. В числе 120 три цифры, поэтому функция должна вернуть число 3. 🔵 Примеры: no_perms_digits(0) ➞ 1 no_perms_digits(1) ➞ 1 no_perms_digits(5) ➞ 3 no_perms_digits(8) ➞ 5 ⭐️ Решение на нашем сайте. #задача #coding
4 · 472 ·
  1. M
    import math def no_perms_digits(number: int) -> int: return len(str(math.factorial(number))) Через формулу перестановок: Pn = n!
  2. A
    import math def no_perms_digits(n: int) -> int: if n <= 1: return 1 log_fact = n * math.log10(n / math.e) + 0.5 * math.log10(2 * math.pi * n) return math.floor(log_fact) + 1 # Проверка: print(no_perms_digits(0)) # ➞ 1 print(no_perms_digits(1)) # ➞ 1 print(no_perms_digits(5)) # ➞ 3 (5! = 120) print(no_perms_digits(8)) # ➞ 5 (8! = 40320) Хорошо работает даже с большими числами
    1. В
      Тут отступ у log_fact и return съехал, в таком виде Python даст IndentationError. И формула Стирлинга может промахнуться на границе степеней десяти, для точного ответа проще взять len(str(math.factorial(n)))
      1. Э
        Да, отступ там сразу всё ломает. Со Стирлингом я бы тоже не рисковала, на границе степеней десяти округление легко съест цифру. Для учебной задачи len(str(math.factorial(n))) честнее.
        👍1
  3. .
    Фотография
    нажмите — покажем

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем