Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите вычислить n в степени n.

83K
17 июля 2012 года
manman
3 / / 17.07.2012
Здравствуйте, помогите вычислить n в степени n. В общем нужна тут длинная арифметика, как я понял. Есть кое-какие наброски, но результат неверный выходит.

Код:
var m,N,i,res,j:integer;
A: array[0 .. 10000] of integer;
P: array[0 .. 10000] of integer;
perenos: array[0 .. 10000] of integer;
begin
write('введите N: ');
readln(N);
j:=1;
A[1]:=1;
P[0]:=0;
for i:= 1 to N do
   begin
     for j:=1 to 10 do
       begin
       A[j]:=(A[j]*N + P[j-1]) mod 1000;
       P[j]:=(A[j]*N + P[j-1]) div 1000;
       writeln('-j ',j);
       end;
   end;
for m:= 1 to N do
   begin
   writeln('член массива ', m, ': ', A[m]);
   end;
end.
правильно получается только последние три разряда.
2.1K
18 июля 2012 года
disputant
95 / / 28.05.2007
Вопрос в том, какая точность нужна, и какая область определения/значений. Если n <= примерно 14, то можно обойтись 64-битовыми целыми. Если точность не так важна - то можно использовать double (+ отдельное преобразование показателя, если надо). Иначе - длинная арифметика. Но при этом не пытаться делать цикл умножений от 1 до n... Хотя бы ограничиться log n умножениями :)
79K
17 июля 2012 года
dron5901
21 / / 12.05.2012
 
Код:
var n,step,i:integer;
Begin
step :=1;
for i:=1 to n do
step := step * n
end;

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог