HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #41  
Старый 15.12.2007, 01:13
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме:
535407

Репутация: 57
Отправить сообщение для ~Lexx~ с помощью ICQ
По умолчанию

Цитата:
Сообщение от VERte][  
аха-ха жжёшь) а если у тебя n за maxint выйходит?) и ты конечно крут с extended, если у тебя будет найти сумму 1!+..+n! где n=100000, то ты пролетишь))))
БЛин ну простите - нету такого алгоритма который бы не используя динамическую память считал факториал100000. факториал 1600 - так считаеться и задача для 1500 идет... а дальше переполнение стека.

Последний раз редактировалось ~Lexx~; 15.12.2007 в 01:19..
 
Ответить с цитированием

  #42  
Старый 15.12.2007, 01:35
VERte][
Участник форума
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме:
3013539

Репутация: 441
По умолчанию

ну ты собирался нормальный алгоритм представить, вот и покажи, потому что длинная арифметика вычисляется совсем не так, как ты показал)
 
Ответить с цитированием

  #43  
Старый 15.12.2007, 02:58
~Lexx~
Участник форума
Регистрация: 30.09.2006
Сообщений: 165
Провел на форуме:
535407

Репутация: 57
Отправить сообщение для ~Lexx~ с помощью ICQ
По умолчанию

Молодой человек - если ты хоть раз писал что-нибудь, кроме гавеных сплойтов и вузовских программ ты должен был бы знать что основной функцией ооп являетсья независимость кода основной программы от модулей - и сейчас именно тот случай - я переопределю метод умножения, но алгоритм останеться прежним - мне его не надо будет менять, если кто-то забожит реализацию умножения лучше моего...
 
Ответить с цитированием

  #44  
Старый 15.12.2007, 16:39
rubik-nerubik
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме:
409147

Репутация: 33
По умолчанию

это интересно конечно, флуд -))) но есть мера,

LExx напиши мне программу, хватит умничать, правда если ты сам хоть что-то умеешь =\
 
Ответить с цитированием

  #45  
Старый 15.12.2007, 16:52
rubik-nerubik
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме:
409147

Репутация: 33
По умолчанию

на задачу Be0wu1fa
ругается тут
.........
var k,l:longint;
begin - Stack overlfow error
.........
 
Ответить с цитированием

  #46  
Старый 15.12.2007, 21:55
Sn@k3
Познавший АНТИЧАТ
Регистрация: 13.04.2006
Сообщений: 1,738
Провел на форуме:
5151669

Репутация: 1198


Отправить сообщение для Sn@k3 с помощью ICQ
По умолчанию

мда, что это все выше было?)))) тебе требовались процедуры длинного сложения и умножения.. ну че-то вроде того...

Код:
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)
 


Быстрый переход




ANTICHAT.XYZ