ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

15.12.2007, 01:13
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
Сообщение от VERte][
аха-ха жжёшь) а если у тебя n за maxint выйходит?) и ты конечно крут с extended, если у тебя будет найти сумму 1!+..+n! где n=100000, то ты пролетишь))))
БЛин ну простите - нету такого алгоритма который бы не используя динамическую память считал факториал100000. факториал 1600 - так считаеться и задача для 1500 идет... а дальше переполнение стека.
Последний раз редактировалось ~Lexx~; 15.12.2007 в 01:19..
|
|
|

15.12.2007, 01:35
|
|
Участник форума
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
ну ты собирался нормальный алгоритм представить, вот и покажи, потому что длинная арифметика вычисляется совсем не так, как ты показал)
|
|
|

15.12.2007, 02:58
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме: 535407
Репутация:
57
|
|
Молодой человек - если ты хоть раз писал что-нибудь, кроме гавеных сплойтов и вузовских программ ты должен был бы знать что основной функцией ооп являетсья независимость кода основной программы от модулей - и сейчас именно тот случай - я переопределю метод умножения, но алгоритм останеться прежним - мне его не надо будет менять, если кто-то забожит реализацию умножения лучше моего...
|
|
|

15.12.2007, 16:39
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
это интересно конечно, флуд -))) но есть мера,
LExx напиши мне программу, хватит умничать, правда если ты сам хоть что-то умеешь =\
|
|
|

15.12.2007, 16:52
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
на задачу Be0wu1fa
ругается тут
.........
var k,l:longint;
begin - Stack overlfow error
.........
|
|
|

15.12.2007, 21:55
|
|
Познавший АНТИЧАТ
Регистрация: 13.04.2006
Сообщений: 1,738
Провел на форуме: 5151669
Репутация:
1198
|
|
мда, что это все выше было?)))) тебе требовались процедуры длинного сложения и умножения.. ну че-то вроде того...
Код:
program Snak3;
var ss,s:string;
n,i,k:longint;
read(n);
s:=''; ss:='';
for i:=1 to n do
begin
for k:=1 to i do um(s,str(k),s);
sum(ss,s,ss);
end;
procedure um(a,b:string;var c:string);
var n,k,i,j,x,p:integer; d:string;
begin
n:=length(a);
k:=length(b);
c:=''; d:=''; p:=0;
for i:=1 to n+k do d:=d+'0';
for j:=k downto 1 do
begin
p:=0;
for i:=n downto 1 do begin
x:=(ord(a[i])-ord('0'))*(ord(b[j])-ord('0'))+p+ord(d[i+j])-ord('0');
d[i+j]:=chr((x mod 10)+ord('0'));
p:=x div 10;
end;
d[j]:=chr(ord(d[j])+p);
end;
i:=1;
n:=length(d);
while (d[i]='0') and (i<n) do inc(i);
for k:=i to n do c:=c+d[k];
end;
procedure raz(a,b:string;var c:string);
var x,n,k,i,p,g:integer;
d:string;
begin
n:=length(a);
k:=length(b);
if k<n then for i:=k+1 to n do b:='0'+b;
d:=''; c:=''; p:=0;
for i:=n downto 1 do
begin
if a[i]<b[i] then
begin
a[i-1]:=chr(ord(a[i-1])-1);
x:=10+ord(a[i])-ord(b[i]);
d:=chr(x+ord('0'))+d;
end
else begin
x:=ord(a[i])-ord(b[i]);
d:=chr(x+ord('0'))+d;
end;
end;
i:=1;
n:=length(d);
while (d[i]='0') and (i<n) do inc(i);
for k:=i to n do c:=c+d[k];
end;
function cmp(a,b:string):string;
var n,k,i:integer; c:string;
begin
n:=length(a);
k:=length(b);
c:='';
if n<k then c:='-' else
begin
if k<n then c:='+' else
begin
i:=1;
while ((a[i]=b[i])and(i<=n)) do inc(i);
if (a[i]<b[i]) then c:='-';
if (a[i]>b[i]) then c:='+';
if (i=n+1) then c:='=';
end;
end;
cmp:=c;
end;
procedure sum(a,b:string;var c:string);
var x,i,p,n,k:integer;
begin
n:=length(a);
k:=length(b);
p:=0;
c:='';
if n<k then begin
for i:=n+1 to k do
a:='0'+a;
end else
begin
for i:=k+1 to n do
b:='0'+b; end;
n:=length(a);
for i:=n downto 1 do
begin
x:=ord(a[i])-ord('0')+ord(b[i])-ord('0')+p;
c:=chr((x mod 10)+ord('0'))+c;
p:=x div 10;
end;
if p<>0 then
begin
inc(n);
c:='1'+c;
end;
те осталось переменные sum и um вывести ну или сохранить в файл....
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|