Помощь - Поиск - Пользователи - Календарь
Полная версия: Длинная арифметика
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Witaliy
Добрый день всем!

Я учюсь решать задачи, но никак не могу найти подходящей справки по длинной арифметике. Пожалуйста, дайте полный пример кода на Паскале для решения такой задачи:
За 1 рубль можна увеличить рост человека в К раз. Сколько нужно потратить денег для того, что-бы достич росту М (не обезательно ровно М, можно и больше, НО не меньше). Текущий рост - N
Например
(1 <= N, M, K <= 1000000000 (10^9) )
К=3 М=200 N = 8

Решыть это можно так:
умножать n на К пока n < m

тоисть

while n < m do
n := n*k;

Но мне нужно организировать при 1 <= N, M, K <= 1000000000 (10^9)
Буду благодарен за любую помощь.

Спасибо!
Ozzя
Длинная арифметика
volvo
При ограничениях
Цитата
(1 <= N, M, K <= 1000000000 (10^9) )
длинная арифметика ни к чему. LongInt перекрывает этот интервал как минимум в 2 раза.
Witaliy
Да, ето я видел, спасибо.
Понимаете, мне етот алгоритм не понятный какой-то...
Нраиться мне такой:

const NMax = 2000;
type digit = 0..9;
dlchislo = array[1..NMax] of digit;


Для ввода будет так:

procedure translate(s : string; var a :dlChislo; ok : boolean);
var i : word;
begin
zero(a);
i := length(s); ok := true;
while (i >= 1) and ok do
begin
if s[i] in ['0'..'9'] then
a[length(s) - i+1] := ord(s[i]) - 48
else ok := false; i := i-1;
end;
end;


Тегами пользуйся для оформления исходников...

Такой алгоритм мне кажеться понятнее, чем тот что вы дали

Тут розряды записани наоборот, тоисть в масиве сначала йдуть десятки, потом сотни и т.д. например число 125 записано как 521


Мне бы организировать и другие операции, например деление, сравнение...
Буду благодарен.

Добавлено через 2 мин.
Цитата
длинная арифметика ни к чему. LongInt перекрывает этот интервал как минимум в 2 раза.


Ладно, извините, ошибся, припустим что ограничение 10^30
Witaliy
Мне бы конкретный пример робочей программы для обчисление 2^N при N <=1000, ш=щитать должно до 1 сек.
Спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.