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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2018, 01:32   #1
ImmortalisNox
Пользователь
 
Регистрация: 05.11.2017
Сообщений: 18
По умолчанию Система остаточных классов, перевод назад в десятичную систему счисления

Здравсвуйте.
Научился переводить число в СОК, но не могу понять как перевести его назад. Буду благодарен если кто-то обьяснит.

Число: 175818={0,0,3,6,5,6,4}; базис: {2,3,5,7,11,13,17} - его диапазон=510510
ImmortalisNox вне форума Ответить с цитированием
Старый 28.02.2018, 10:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот ЗДЕСЬ на Хабре подробно (с примером) объясняется:

Цитата:
Код:
Способ, основанный на Китайской теореме об остатках, базируется на следующей идее:
X = (x1, x2, … xn) = (x1, 0, …, 0) + (0, x2, …, 0) + … + (0, 0, …., xn) = x1*(1, 0, …, 0) + x2*(0, 1, …, 0) + … + xn*(0, 0, …, 1).
То есть для обратного преобразования требуется найти систему ортогональных базисов B1 = (1, 0, …, 0), B2 = (0, 1, …, 0), …, BN = (0, 0, …, 1). Эти вектора находятся один раз для заданного базиса, а для их поиска требуется решить уравнение вида: (Mi*bi)%pi = 1, где Mi = M/pi, а bi – искомое число. В этом случае позиционное представление Bi = Mi*bi и 
X = (x1*(M1*b1) + x2*(M2*b2) + … + xn*(Mn*bn))%M

Пример: пусть задана система модулей (3, 5, 7), найдем значения Mi и bi (0 < i <= 3)
M = 3*5*7 = 105
M1 = 105/3 = 35
M2 = 105/5 = 21
M3 = 105/7 = 15
(35*b1)%3 = 1 => b1 = 2
(21*b2)%5 = 1 => b2 = 1
(15*b3)%7 = 1 => b3 = 1
Теперь преобразуем какое-нибудь число в системе остаточных классов. Положим 
X = (2, 3, 1) = (2*35*2 + 3*21*1 + 1*15*1)%105 = (140 + 63 + 15)%105 = 218%105 = 8

Минус этого метода заключается в том, что для обратного преобразования требуется умножение и сложение больших чисел (M1, …, Mn), а так же операция взятия остатка по модулю большого числа M.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2018, 16:57   #3
ImmortalisNox
Пользователь
 
Регистрация: 05.11.2017
Сообщений: 18
По умолчанию

Спасибо, разобрался.
ImmortalisNox вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод 5-и значного числа из двоичной в десятичную систему счисления alex1998109 Visual C++ 0 04.10.2016 12:31
Перевод из двоичной в десятичную систему счисления выдает не правильный результат pompiduskus PHP 0 18.09.2013 21:13
Pascal ABC. Перевод из двоичной в десятичную систему счисления. ARTEM_KA Помощь студентам 4 17.11.2010 22:15
Перевод из шестнадцатиричной в десятичную систему Dayne Помощь студентам 5 02.10.2009 01:04