Добрый день всем!
Я учюсь решать задачи, но никак не могу найти подходящей справки по длинной арифметике. Пожалуйста, дайте полный пример кода на Паскале для решения такой задачи:
За 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)
Буду благодарен за любую помощь.
Спасибо!
http://forum.pascal.net.ru/index.php?showtopic=2428
При ограничениях
Да, ето я видел, спасибо.
Понимаете, мне етот алгоритм не понятный какой-то...
Нраиться мне такой:
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;
Мне бы конкретный пример робочей программы для обчисление 2^N при N <=1000, ш=щитать должно до 1 сек.
Спасибо.