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

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

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

 
 Ответить  Открыть новую тему 
> Задача на длинную арифметику. Помогите!
сообщение
Сообщение #1





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

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


Помогите пожалуйста, у меня задача: Написать программу для вычисления корня квадратного из огромного числа( количество цифр в нем n,n>40) при условий что корень извлекается т.е. он целое число. Я нашел алгоритм чисто математический, суть его разбитие на грани и.., вопщем у меня не получается написать на паскале нормально работающую прогу. Я тут смотрел вроде была тема длинная арифметика и там были разобраны некоторые задачи но моей не было. И НИГДЕ в инете кода этой задачи нет. Подмогните!

Сообщение отредактировано: SSJ -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, насчет "нигде" - это ты не прав... Вот, например, библиотека BigInt, в которой реализовано нахождение корня длинного числа: http://www.mi.unicyb.kiev.ua/downloads/acm.../c/BigInteger.c

(то, что она написана на С++, еще не значит, что это же нельзя реализовать на Паскале... Справишься, или нужна помощь?)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Volvo, если тебе не сложно, напиши ты.

__
p.s
и ваабще тебе чисто человеческий респект, я смотрю ты тут многим помогаешь

p.р.s.
Еще хотел спросить ты по asm шаришь, если да то не знаешь алгоритма или мануала по взлому star force, если че сам кречил,то давай по асе свяжимся и ты расскажишь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Здесь: http://volvo71.narod.ru/progs/big_int.rar
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Volvo, эта прога с твоего сайта странно работает она к примеру из числа 138384 не верно считает корень ды и не только для него...
Если ты можешь загляни сюда comp-science.hut.ru/dl-ar/dl-ar.html
и напиши прогу по этому мат алгоритму. Я могу выложить то что я пока сделал но не знаю поможет ли это.. Пожалуйста помоги а то у меня курсовик стоит, из 10 задач одна эта осталась.

Добавлено через 11 мин.
Цитата(SSJ @ 10.04.2007 21:21) *

Volvo, эта прога с твоего сайта странно работает она к примеру из числа 138384 не верно считает корень ды и не только для него...
Если ты можешь загляни сюда comp-science.hut.ru/dl-ar/dl-ar.html
и напиши прогу по этому мат алгоритму. Я могу выложить то что я пока сделал но не знаю поможет ли это.. Пожалуйста помоги а то у меня курсовик стоит, из 10 задач одна эта осталась.

Program KvadratniiKoren;

const
nmax=2000;

var
c,n,c2:array[1..nmax]of integer;

m,zt,c2i,a1s,cs,bbs,rezs,nj,nt,max0s,max1s:string;
mI,l,i,kolgr,j,code,max,max1,x,z,zz,ab1,am1,cc,rez,bm,bb,u:integer;
log:text;

begin

assign(log,'log.ssj_prog'); {очищаем файл}
rewrite(log);
close(log);


read(m);
l:=length(m);

for i:=1 to l do begin {заполняем массив с(числовой)из файла, по 1 символу(цифре) в ячейку массива}
val(m[i],mI,code);
c[i]:=mI; end;

if l mod 2 =0 then {если число цифр в введенном числе четное то по два числа в грани, если нечетное то первая слева грань имеет 1 цифру а все остальные по 2}

begin
writeln('кол-во цифр в числе четное ',l);
for i:=1 to l do begin
assign(log,'log.ssj_prog');
append(log);
writeln(log,m[i],m[i+1]);
i:=i+1;
close(log); end;

kolgr:=round(l/2); {определяем кол-во граней(групп по 2 цифры), ! число граней равно числу цифр исходеного числа}

writeln('В результате должно получиться число, длина которого ',kolgr,' цифр');


assign(log,'log.ssj_prog'); {заполняем массив с2(числовой)из файла, по 2 символа(цифре) в ячейку массива}
reset(log);
for j:=1 to kolgr do
readln(log,c2[j]);

close(log);
erase(log);

writeln('Вывожу введенное число с расстановленными гранями');
for j:=1 to kolgr do write(c2[j],' ');
writeln;



assign(log,'log.ssj_prog');
rewrite(log);
close(log);
nt:='';

for i:=1 to kolgr do
if i=1 then begin
for x:=1 to c2[1] do
if c2[1]>= sqr(x) then max:=x; {ищем число квадрат которого меньше или равен числу 1-ой грани}


assign(log,'log.ssj_prog');
append(log);
writeln(log,max);
close(log);

if kolgr>1 then begin

str(max,max0s);
nt:=nt+max0s;


z:=sqr(max);
zz:=c2[1]-z;
str(zz,zt);
str(c2[i+1],c2i);
a1s:=zt+c2i;
val(a1s,ab1,code);
am1:=2*max;

for x:=1 to ab1 do
if (10*am1+x)*x<=ab1 then max1:=x;

assign(log,'log.ssj_prog');
append(log);
writeln(log,max1);
close(log);

str(max1,max1s);
nt:=nt+max1s;

cc:=ab1-(10*am1+max1)*max1;


end;


for i:=3 to kolgr do begin
str(cc,cs);
str(c2[i],c2i);
bbs:=cs+c2i;
val(bbs,bb,code);


rezs:='';
for j:=1 to i do begin

rezs:=rezs+nt;

val(rezs,rez,code);

bm:=2*rez;
for x:=1 to bb do
if (10*bm+x)*x<=bb then max:=x;

cc:=bb-(10*bm+max)*max;

assign(log,'log.ssj_prog');
append(log);
writeln(log,max);
close(log);


end;
end;
end;


{результат пока выводит в файл}

end;
end.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Исправлено...
На сайте - новая версия программы...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Спасибо Volvo, все работает!
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 28.03.2024 17:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name