Re: Большие числа и системы счислений
От: Lexey Россия  
Дата: 10.08.02 10:46
Оценка: 3 (1)
Здравствуйте Dima_, Вы писали:

D>Здравствуйте, люди добрые!


D>У меня вот такая вот задачка.


D>Есть число неограниченной длинны т.е. в int не всегда можно запихнуть. Число представленно массивом int*. Каждый элемент в массиве определяет значение разрядя (в определенной системе счисления) соответствущего индексу этого элемента. Массив оканчивается элементом со значением -1. Например 7D009AF в 16-ой системе будет {15,10,9,0,0,14,7,-1}. Массив может быть любой длинны.


D>Нужно перевести это число в другую систему счисления и записать в такой же массив.


D>Основания систем счислений в исходном числе и ответе могут быть любые от 2 до 256.


D>Тут основная проблема в том что это число в int не всегда можно зписать т.к. оно очень большое. По той же пречине не всегда получается записать в int n-ный элемент массива умноженный на основание системы счисления в степени n (n теоретически может быть любая).


D>Тут нужен оригинальный алгоритм .


Вот тебе стандартный алгоритм перевода числа в другую систему счисления, в котором нет ничего оригинального:
1) Представляешь новое основание в текущей системе счисления (например, 10 в в 16-ричной — это 0A).
2) Делишь свое число на новое основание (например, в столбик). Остаток от деления — последняя цифра числа в новой СС.
3) Если частное не 0, то переход к 2 с частным в качестве нового делимого.

Все тупо для безобразия. Деление в столбик, надеюсь, написать сумеешь (есть вроде и более продвинутые алгоритмы деления, но я с ними не знаком)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.