Просмотр кода
Идентификатор: 8539fd53 Описание: Код загружен: 21 ноября 2010, 15:34 (Amidamaru)
function FacItr(n: Word): Longint; var f: LongInt; i: Integer; begin f := 1; for i := 2 to n do f := f * i; Result := f; end; procedure TForm1.Button3Click(Sender: TObject); var a:array of byte; s:string; i,j,l,r,r0:integer; b,c:byte; begin s:=Edit1.Text; {текст состоит из цифр} l:=length(s); SetLength(a,l); for I := 0 to l - 1 do a[i]:=Ord(s[i])-30; {превращаем текст в цифры} for i := 0 to l - 2 do {сортируем} for j := i+1 to l-1 do if a[i]>a[j] then begin b:=a[i]; a[i]:=a[j]; a[j]:=b; end; j:=1; b:=a[0]; for i := 0 to l-1 do {делаем их последовательными} if a[i]=b then a[i]:=j else begin b:=a[i]; inc(j); a[i]:=j; end; c:=a[l-1]; r:=FacItr(c); r0:=r div 2; b:=a[0]; j:=0; for i := 1 to l-1 do if a[i]=b then begin r:=r+(r0+j)*(c-1); inc(j); end else begin b:=a[i]; r0:=r div 2; j:=0; end; ShowMessage(IntToStr(r)); end;