Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2016, 00:16   #1
fabiano
Новичок
Джуниор
 
Регистрация: 12.02.2016
Сообщений: 1
Вопрос Как вычислить C из n по k по модулю

Добрый вечер. Есть задача, где как подзадача - нужно вычислять C(n, k) где n константа
при одном запуске программы, а k меняется и нужно вычислять это все по модулю.
C, n, k очень большие.
fabiano вне форума Ответить с цитированием
Старый 02.07.2016, 02:07   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,538
По умолчанию

Что значит " по модулю " ? Остаток от деления ?
Типа
Код:
var C,n,k:Integer;
begin
// 
 C:=n mod k;
Integer может быть от -2147483648 до 2147483647.
type_Oleg вне форума Ответить с цитированием
Старый 02.07.2016, 04:49   #3
ur_naz
Заблокирован
 
Регистрация: 17.06.2016
Сообщений: 62
По умолчанию

Используй связный список

1.) Представь Факториал в виде списка множителей
2.) затем каждый множитель представь в виде простых множителей,
3.) затем последовательно сокращай множители в числителе и знаменателе

Это самый простой вариант, если не поможет используй арифметику длинных чисел, она тоже строится на связном списке
ur_naz вне форума Ответить с цитированием
Старый 06.07.2016, 11:33   #4
Dekay
Пользователь
 
Регистрация: 21.06.2016
Сообщений: 65
По умолчанию

Цитата:
Используй связный список






Последний раз редактировалось Dekay; 06.07.2016 в 11:36.
Dekay вне форума Ответить с цитированием
Старый 06.07.2016, 11:41   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

mod(n!,m) ===0 при m <=n!!!!!!!!!!

n! =(m-1)! *m * (m+1) *..*n
mod(a*b, m) =mod( mod(a,m)*mod(b,m) )

mod(n!,m) =mod(mod((m-1)!, m)* mod(m,m) * mod(m+1,m) *.. *mod(n,m) ) =
mod(mod((m-1)!, m)* 0 * mod(m+1,m) *.. *mod(n,m) ) ===0
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить максимальный по модулю элемент. (Турбо паскаль) erte Помощь студентам 6 19.10.2012 06:05
Паскаль Вычислить у - первое из чисел sin х, sin sin x, sin sin sin x, ..., меньшее по модулю 10-4 Kikikiss Помощь студентам 2 25.03.2012 13:58
Вычислить максимальный по модулю элемент массива sap_ax Visual C++ 1 12.04.2011 20:12
как добавить новые ссылки навигации в модулю User в Drupal killer12rus WordPress и другие CMS 3 22.07.2009 23:34