|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.10.2011, 21:45 | #1 | |
Пользователь
Регистрация: 15.10.2008
Сообщений: 36
|
C - Задача из комбинаторики
Доброе время суток.
Получил по лабе вот такую задачу: Цитата:
Помогите кто-нибудь разобраться с условием |
|
24.10.2011, 21:59 | #2 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
1) Определить сколько двоичных разрядов у такого числа. Их примерно (int)log2(N)+1. Обозначим M.
2) Тогда кол-во всех возможных чисел с K единицами из такого кол-ва разрядов с учетом порядка равно A(M, k) = M!/(M-k)! Где x! - факториал числа x.
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
|
24.10.2011, 22:14 | #3 |
Пользователь
Регистрация: 15.10.2008
Сообщений: 36
|
Спасибо большое!!
|
24.10.2011, 22:46 | #5 |
Пользователь
Регистрация: 15.10.2008
Сообщений: 36
|
Вот решение, так сказать для истории:
Код:
|
24.10.2011, 22:53 | #6 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
Не обязательно писать факториал, это несколько замедлит код, так как и в произведении знаменателя, и в произведении числителя вы считаете некоторые числа по несколько раз. Достаточно в цикле for посчитать a=(m)*(m-1)*(m-2)*......*(m-k+1), тогда лишних произведений не будет.
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача минимизации дисбаланса на линии сборки (задача минимакса) | LenZab | Microsoft Office Excel | 13 | 13.03.2011 22:51 |
Задача на Си | Buddy | Помощь студентам | 1 | 19.01.2011 02:41 |
Задача | Stydent777 | Помощь студентам | 2 | 16.01.2011 23:37 |
задача | Кубик-Рубик | Помощь студентам | 2 | 15.01.2011 16:03 |