IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Возведение числа в БОЛЬШУЮ степень, Степень числа забивается в массив
Кит
сообщение 6.03.2005 12:57
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста с програмкой реализации возведения числа в большую степень (30..200). smile.gif :low:
Реализация должна вроде с помощью записи чисел в массив
Но до меня чо то не доходит как это сделать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
SWEETY
сообщение 10.07.2006 17:25
Сообщение #2


Гость






А мне вот надо посчитать 2^500 с точностью до последней цифры,а я не могу.Почитала 'Длинную арифметику' и всё равно не могу !bye2.gif.ПОМОГИТЕ,ПОЖАЛУЙСТА СДЕЛАТЬ ЭТО...
 К началу страницы 
+ Ответить 
volvo
сообщение 10.07.2006 17:51
Сообщение #3


Гость






Цитата(SWEETY @ 10.07.2006 17:25)
Почитала 'Длинную арифметику' и всё равно не могу

Странно... У меня получилось:
uses crt;
const
_maxdig=1000;
_osn=10000;

type
Tlong=array[0.._maxdig]of integer;
Plong=^Tlong;

procedure WriteLong(var f:text;a:Plong);
var
ls, s: string;
i: integer;
begin
str(_osn div 10,ls);
write(f,a^[a^[0]]);
for i:=a^[0]-1 downto 1 do begin
str(a^[i],s);
while length(s)<length(ls) do s:='0'+s;
write(f,s);
end;
writeln(f);
end;

procedure MulLongShort(a:Plong;const k:longint;c:Plong);
var i: integer;
begin
fillchar(c^,sizeof(c^),0);
if k=0 then inc(c^[0]) else begin
for i:=1 to a^[0] do begin
c^[i+1]:=(longint(a^[i])*k+c^[i]) div _osn;
c^[i]:=(longint(a^[i])*k+c^[i]) mod _osn;
end;
if c^[a^[0]+1]>0 then c^[0]:=a^[0]+1 else c^[0]:=a^[0];
end;
end;

var
long_n1, long_n2: PLong;
i: integer;
console: text;

begin
long_n1 := new(plong);
long_n2 := new(plong);

long_n1^[0] := 1; long_n1^[1] := 1; { <-- long_n1 := 1 }
for i := 1 to 500 do begin
mullongshort(long_n1, 2, long_n2);
long_n1^ := long_n2^;
end;

assigncrt(console); rewrite(console);
writelong(console, long_n1);
close(console);

end.
 К началу страницы 
+ Ответить 
Гость
сообщение 28.04.2007 20:31
Сообщение #4


Гость






Цитата(volvo @ 10.07.2006 17:51) *

Странно... У меня получилось:
uses crt;
const
_maxdig=1000;
_osn=10000;

type
Tlong=array[0.._maxdig]of integer;
Plong=^Tlong;

procedure WriteLong(var f:text;a:Plong);
var
ls, s: string;
i: integer;
begin
str(_osn div 10,ls);
write(f,a^[a^[0]]);
for i:=a^[0]-1 downto 1 do begin
str(a^[i],s);
while length(s)<length(ls) do s:='0'+s;
write(f,s);
end;
writeln(f);
end;

procedure MulLongShort(a:Plong;const k:longint;c:Plong);
var i: integer;
begin
fillchar(c^,sizeof(c^),0);
if k=0 then inc(c^[0]) else begin
for i:=1 to a^[0] do begin
c^[i+1]:=(longint(a^[i])*k+c^[i]) div _osn;
c^[i]:=(longint(a^[i])*k+c^[i]) mod _osn;
end;
if c^[a^[0]+1]>0 then c^[0]:=a^[0]+1 else c^[0]:=a^[0];
end;
end;

var
long_n1, long_n2: PLong;
i: integer;
console: text;

begin
long_n1 := new(plong);
long_n2 := new(plong);

long_n1^[0] := 1; long_n1^[1] := 1; { <-- long_n1 := 1 }
for i := 1 to 500 do begin
mullongshort(long_n1, 2, long_n2);
long_n1^ := long_n2^;
end;

assigncrt(console); rewrite(console);
writelong(console, long_n1);
close(console);

end.



Эх- а как 99 в степень 99 возвести?!?!?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Кит   Возведение числа в БОЛЬШУЮ степень   6.03.2005 12:57
volvo   Читайте здесь: FAQ: Длинная арифметика   6.03.2005 13:07
SWEETY   А мне вот надо посчитать 2^500 с точностью до посл...   10.07.2006 17:25
volvo   Почитала 'Длинную арифметику' и всё равно ...   10.07.2006 17:51
Гость   Странно... У меня получилось: uses crt; const _...   28.04.2007 20:31
Гость   Volvo,огромное тебе спасибо :kiss2: .Но сёдня ход...   11.07.2006 12:36
volvo   Я не понял, тебе надо найти ВСЕ цифры числа 2^500,...   11.07.2006 13:22
Гость   ВСЕ.... Я нашла только закономерность 3-х послед...   11.07.2006 14:24
Гость   люди а как возвести 2006 в 2007 стпень. и 2007 в ...   19.10.2006 9:27
volvo   Вот программа (когда она попросит ввести число, вв...   19.10.2006 9:58
volvo   Посмотреть на программу, присоединенную к посту №9...   28.04.2007 20:52
Гость   Посмотреть на программу, присоединенную к посту №...   28.04.2007 20:56
Гость   Плиззз)) очень срочно нужно возвести число 99 в ...   28.04.2007 21:21
volvo   Может, ты покажешь, КАК именно пробовал изменять?   28.04.2007 21:03
Гость   Может, ты покажешь, КАК именно пробовал изменять?...   28.04.2007 21:05
volvo   Ну, и с чего ты решил, что ответ - неправильный?   28.04.2007 21:21
Гость   Ну, и с чего ты решил, что ответ - неправильный?...   28.04.2007 21:23
Гость   в делфи когда цикл ставишь от 1 до 0 возведение в...   28.04.2007 21:27
Гость   в делфи когда цикл ставишь от 1 до 0 возведение в...   28.04.2007 21:27
volvo   Ну, правильно... Небольшое изменение: buffer^ :=...   28.04.2007 22:02
Гость   Ну, правильно... Небольшое изменение: buffer^ :...   28.04.2007 22:07


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"