Последние темы Поиск
Общие форумы
Форумы поддержки портала iXBT.com
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаКриптовалюты, майнинг, blockchain-технологии, NFTИскусственный интеллект: технологии, практика, развитиеTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Эта тема расположена в архиве и закрыта для обсуждения.
ZOObilo: Проблема с подсчетом C(n,k)(С из n по k) в больших числах
ZOObilo
unregistered
Автор темы
Z
ZOObilo unregisteredАвтор темы
  21 год назад / 20 марта 2004 21:14
Имеется задача: посчитать C(n,k) в больших числах, но так, чтобы сначала производились необходимые деления, а уж потом умножения. Передумал кучу вариантов, но проблема везде одна: надо выделять массив либо из k, либо из n-k элементов (в лучшем случае битов, что тоже много), что, сами понимаете, невозможно, т.к. n и k практически не ограничены. Отсюда вопрос: как вы думаете, можно проделать необходимые операции, не прибегая к выделению массивов?
Harkonnen
Member
1602/1825 ответов
25 лет на iXBT, с февраля 2000
Чаще пишет в "Наука" (45%)
Инфо
H
Harkonnen Member
21 год назад / 21 марта 2004 01:14
ZOObilo
1. Почему важен процесс, а не результат? Это я о делениях, там сложений достаточно.
2. Как без массивов планируется получить результат если он может содержать кучу цифр?
ZOObilo
unregistered
Автор темы
Z
ZOObilo unregisteredАвтор темы
21 год назад / 21 марта 2004 02:26
1. Ну, сказано: сделать так. И все (ну задача в универе...)
2. Ясно, что для хранения больших чисел будет использоваться массив. Но это, в принципе, не наше дело. Можно даже представить, что это не я писал, а внешняя dll-ка. Суть в том, чтобы не использовать массив, где количество элементов будет большим числом.
Softwarer
Member
254/274 ответов
23 года на iXBT, с августа 2001
Чаще пишет в "Программирование" (76%)
Web-страница
Инфо
S
Softwarer Member
21 год назад / 22 марта 2004 11:30
ZOObilo:
Имеется задача: посчитать C(n,k) в больших числах, но так, чтобы сначала производились необходимые деления, а уж потом умножения. Передумал кучу вариантов, но проблема везде одна: надо выделять массив либо из k, либо из n-k элементов (в лучшем случае битов, что тоже много), что, сами понимаете, невозможно, т.к. n и k практически не ограничены. Отсюда вопрос: как вы думаете, можно проделать необходимые операции, не прибегая к выделению массивов?
Хм. Имхо направление довольно очевидно. Насколько мне изменяет память, если сократить k! в числителе и знаменателе, C(n,k)=n*(n-1)*...*(n-k+1)/(n-k)!. Осталось сократить получившуюся дробь. На практике, полагаю, вполне хватит пробежать по знаменателю, сокращая его множители с кратными из числителя. В принципе же, нужно сокращать каждый множитель из знаменателя на НКО с очередным элементом из числителя, пока не сократишь весь знаменатель (сократится по определению, то есть за выход из цикла здесь можно не волноваться). Останется лишь перемножить оставшееся в числителе.
ZOObilo
unregistered
Автор темы
Z
ZOObilo unregisteredАвтор темы
21 год назад / 22 марта 2004 15:23
Это то понятно. Только вот как это сделать, не храня массив, а?
Softwarer
Member
257/277 ответов
23 года на iXBT, с августа 2001
Чаще пишет в "Программирование" (76%)
Web-страница
Инфо
S
Softwarer Member
21 год назад / 22 марта 2004 16:29
ZOObilo:
Это то понятно. Только вот как это сделать, не храня массив, а?
Хм. Достаточно просто. Суть в том, что тебе все время надо помнить, какие операции осталось выполнить, храня эти операции в виде диапазона n1..n2. Примерно так:

01{ Осталось вычислить (n-k+1)*...*n и разделить на (n-k)! }
02current_result := 1 ;
03m := n - k + 1 ;
04{ Сократим множители из знаменателя, одновременно
05   накапливая результат в current_result }
06for i := 2 to n - k do
07begin
08  x := CalcNOD (current_result, i) ;
09  current_result := current_result / x ;
10  current_divider := current_divider / x ;
11  while current_divider > 1 do
12  begin
13    x := CalcNOD (current_divider, m) ;
14    current_divider := current_divider / x ;
15    current_result := current_result * (m / x) ;
16    m := m + 1 ;
17  end ;
18end ;
19{ Домножим на неиспользованные множители }
20for i := m to n do current_result := current_result * i ;
ZOObilo
unregistered
Автор темы
Z
ZOObilo unregisteredАвтор темы
21 год назад / 22 марта 2004 23:28
Все еще проще. Пробегаем по i от 1 до k и СНАЧАЛА умножаем текущий результат на n - k + i, а потом делим на i.
А делиться будет потому, что когда мы делим на i у нас в произведении есть уже i подряд идущих чисел, одно из которых заведомо делится на i.

Вот и все.

Всем спасибо за советы...
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Эта тема расположена в архиве и закрыта для обсуждения.
Последние обсуждения в Конференции
21:59Фан клуб Ольги, которая Olga Kinda High Флуд
21:59Зарубежные сериалы, которые стоит смотреть Кино
21:59OLED телевизоры LG ДК TV
21:58Будет ли война России с Украиной? Политика
21:58Гибель тургруппы Дятлова (1959, Северный Урал) Общий
21:57Как вам творчество Бориса Гребенщикова (Аквариум) Культура
21:56 Биллибои против сонибоев. Сонибои против мариобоев. Мариобои против всех. И наоборот. Консоли
21:56Пиво Кулинария
21:56Выбор мобильной рабочей станции: неттоп, мини-ПК Ноутбуки
21:55Выбор матраса Ремонт
21:55Fujifilm S5Pro - зеркальная камера с уникальной матрицей Фото
21:54Выбор бюджетного китайского DAC (ЦАП) Стерео
21:54ОЗОН - как меня пытается обмануть российский универсальный интернет-магазин Рынок
21:52Сисадминская курилка Администрирование
21:52Лучшие (полноразмерные) проводные наушники в разных ценовых диапазонах Цифр.звук
21:51Футбол Спорт
21:51Intel Atom и "все все все" Тех. поддержка
21:49Выбор посудомоечной машины Бытовая техника
21:49NAS своими руками НАС
21:48Asus H87-Pro [не определяются PCI сетевые карты] Сист. платы
21:40Синий с салатовым и 6-ступенчатая «механика». Представлена Honda Integra 2025 — двойник Honda Accord за 18 тыс. долларов
21:05Аналог Toyota Camry от Geely с 8-ступенчатым «автоматом» и 238-сильным мотором — всего 17 тыс. долларов. Представлены новые версии Geely Preface
20:55Учёные обнаружили «вечную» квантовую пульсацию в тончайших плёнках — шаг к компьютерам будущего
20:37Представлены новые версии Geely Monjaro: с улучшенным оснащением, 2,0-литровым мотором и 8-ступенчатым «автоматом», но без полного привода
20:35Клетка-хозяин заставила бактерию делиться по своим правилам — учёные нашли ключевой механизм эволюции
19:33У Lada Iskra возникли проблемы с безопасностью — опасный дефект связан со срабатыванием фронтальной подушки безопасности
18:32Huawei переизобрела «раскладушку». Представлен складной смартфон Huawei Pura X с 6,3-дюймовым экраном 16:10, 66-ваттной зарядкой, мощной камерой и защитой от воды
18:10Производство Lada Aura идёт полным ходом. В 2025 году собираются выпустить 8000 автомобилей
17:11«Кузов из фольги сделан? Вот раньше были кузова!». На критику Lada ответили на заводе АвтоВАЗ, раскрыв интересные детали производства
17:03Toyota Alphard, подвинься. В России начали продавать Volkswagen Multivan T7 2025, цена — 12,1 млн рублей