компьютерный форум
Вернуться   Компьютерный форум > Программирование и вебстроительство > Программирование

Ответ
 
LinkBack Опции темы Опции просмотра
Старый 30.01.2006, 03:13   #1
Gem
Пользователи
 
Регистрация: 23.01.2006
Сообщений: 8
По умолчанию

Какую необходимо использовать переменную для возведения числа в большую степень (например, 320 в 2156 степени) , и как ею оперировать в математических выражениях?




Gem вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
30.01.2006, 03:13
Техник
реклама
По умолчанию

Старый 31.01.2006, 09:31   #2
Пользователи
 
Регистрация: 03.01.2006
Сообщений: 75
По умолчанию

Для возведения числа в степень (степень очень велика) можно использовать алгоритмы большой арифметики. Т.к. при возведении 2 в 1000 степень число не вкладывается в byte, shortint, integer, longint, ...
Принцип возведения:
Заносим число в массив, например от 1 до 1000 из integer (например число 987->[9,8,7]). В цикле от 1 до степени-1например до 1 если степень 2) Умнажаем по правилам умнажения (столбцом) (наверно понятно, если в массиве больше 9 (т.е. более одной цифры) вычитаем 10 и прибавляем 1 в следующей ячейке.
Потом из массива забираем число. Степень возедена. (скоро напишу код и перешлю)
seva_avi вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 31.01.2006, 11:02   #3
Пользователи
 
Регистрация: 03.01.2006
Сообщений: 75
По умолчанию

А вот сама процедура по возведению в степень. Здесь в массиве L храниться число, например 123456789-> [9,8,7,6,5,4,3,2,1]. Надеюсь разберешься как сувать в этот массив число.

Procedure Solve;
Var i,p : LongInt;
Begin
L[0]:=1;
L[1]:=1;

While N>=Mul2 do
Begin
Dec(N,Mul2);
i:=1;
p:=0;
While i0 do
Begin
Inc(L[0]);
L[L[0]]:=p mod Base;
p:=p div Base;
End;
End;

While N>0 do
Begin
Dec(N);
i:=1;
p:=0;
While i0 do
Begin
Inc(L[0]);
L[L[0]]:=p mod Base;
p:=p div Base;
End;
End;

OutLong(L);

End;

Надеюсь что и взять число из массива сумеешь! Подробно описан данный алгоритм в длинной арифметике... Можно еще с помощью длинной арифметики считать сумму, разность, деление, умножени... где большие числа длиной более 200 цифр... (ну конечно 23 знака - это тоже достаточно длинная)

seva_avi вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Старый 01.02.2006, 04:50   #4
Gem
Пользователи
 
Регистрация: 23.01.2006
Сообщений: 8
По умолчанию

2 seva_avi,
спасибо, буду разбираться
Gem вне форума  
Digg this Post!Bookmark Post in Technorati
Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.



Текущее время: 05:41. Часовой пояс GMT.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Content Relevant URLs by vBSEO 3.5.0 RC2