Cod sursa(job #46364)

Utilizator Adrian001Vladulescu Adrian Adrian001 Data 2 aprilie 2007 16:37:42
Problema Numere 2 Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.55 kb
Program cel;
Type vector=array[2..2000000000] of integer;
var f,g:text;
    a:vector;
    n,d,fm,min,i:longint;

function cmmdc(x,y:longint):longint;
Begin
If x mod y=0 then cmmdc:=y
             else cmmdc:=cmmdc(y,x mod y);
end;

Begin
Assign(f,'numere2.in');Reset(f);
Assign(g,'numere2.out');Rewrite(g);
Read(f,n);
d:=2;
repeat
fm:=0;
While n mod d=0 do
 Begin
  inc(fm);
  n:=n div d;
 end;
If fm<>0 then inc(a[d],fm);
If d=2 then inc(d)
       else inc(d,2);
until n=1;
min:=0;
fm:=0;
For i:=2 to d do
  If a[i]<>0 then Begin
                   If min=0 then Begin
                                  If fm=0 then fm:=a[i]
                                         else min:=cmmdc(fm,a[i]);
                                 end
                            else min:=cmmdc(min,a[i]);
                  end;
fm:=1;
If min=0 then Begin
               If d=3 then Begin
                            Writeln(g,d-1);
                            Writeln(g,a[d-1]);
                           end
                      else Begin
                            Writeln(g,d-2);
                            Writeln(g,a[d-2]);
                           end;
              end
         else Begin
               For i:=2 to d do
                If a[i]<>0 then Begin
                                 a[i]:=a[i] div min;
                                 fm:=fm*round(exp(a[i]*ln(i)));
                                end;
               Writeln(g,fm);
               Writeln(g,min);
              end;
Close(f);
Close(g);
end.