Помощь - Поиск - Пользователи - Календарь
Полная версия: В какой системе счисления находится число
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость_Антон
Даны натуральные числа n, m, неотрицательные целые числа am, am-1..a0 такие, что amam-1..a0- запись n в некоторой системе счисления (среди аm могут быть и числа, большие девяти, - это будет означать, что основание системы счисления заведомо больше десяти). Требуется определить основание использованной системы счисления.

Хотябы с чего начать подскажите.

javascript:emoticon(':huh:')
volvo
Гость_Антон
Начни с того, что найди среди чисел A[i] максимальное; это максимальное число, увеличенное на 1, и будет минимальным основанием системы счисления...

(Почему минимальным? Пример: в какой системе счисления записано число 12456? В 7-ой? 8-ой? 10-ой? Можно точно сказать лишь одно: основание с/с больше 6, т.к. максимальная цифра в записи числа = 6)
Guest
а число 1010111100101 не обьязательно двоичное!
volvo
Guest
читать умеешь?
Цитата
максимальное число, увеличенное на 1, и будет минимальным основанием системы счисления..
xds
В основе любого решения этой задачи будет лежать (прямо или косвенно) следующий факт:

n = a[m] * b^m + a[m - 1] * b^(m - 1) + ... + a[0] * 1,
где b - основание системы счисления.

Переформулируем условие: для данных неотрицателных целых чисел a[0], a[1], ..., a[m] и натурального числа n найти такое натуральное число b, что указанное выше равенство превратится в тождество.
Guest
Зто подбором чтоли

типо от 2 до 26 подставлять в

a[m] * b^m + a[m - 1] * b^(m - 1) + ... + a[0] * 1

вместо b и сравнивать с n
volvo
Guest
Не надо от 2-х до 26 (кстати, почему именно до 26? Уж не по количеству ли букв в латинском алфавите?). Я же показал, как сократить диапазон вычислений: сначала находишь минимально возможное основание с/с, а потом уже по формуле, предложенной xds от этого самого числа до 26.
Гость_Антон
в "худшем" случае от 2 до 9+26

{2345678910ABCDEFGHIJKLMNOPQURSUVWXYZ}

При нахождении минимального основания,
от него до 36,потом ещё какой-то case нада делать для преобразования буквы в число в 10-й сс. или спец формулу применить типа, ord(a)- там, по таблице не помню, 90, чтоль, короче, я еще загляну!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.