Cod sursa(job #570426)

Utilizator gicu_01porcescu gicu gicu_01 Data 3 aprilie 2011 01:13:19
Problema Suma si numarul divizorilor Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.02 kb
var a:array[1..1000000]of boolean;
    b:array[1..1000000]of int64;
    c,k,t:longint;
procedure ciur;
var i,j:longint;
begin
 for i:=1 to 1000000 do a[i]:=true;
 k:=0;
 for i:=2 to 1000000 do
  if a[i] then
   begin
    j:=i*2;
    while j<=1000000 do
     begin
      a[j]:=false;
      j:=j+i;
     end;
    inc(k); b[k]:=i;
   end;
end;

function calc(n:int64):int64;
var i:longint; p,l,j,h:int64;
begin
 p:=1;l:=1;
 for i:=1 to k do
   if n mod b[i]=0 then
    begin
     j:=1; h:=0;
     while n mod b[i]=0 do
      begin
       j:=j*b[i];
       n:=n div b[i];
       inc(h);
      end;
     j:=j*b[i]-1; l:=l*(b[i]-1); p:=p*j; c:=c*(h+1);
    end;
 calc:=round(p/l);
end;

procedure afis;
var i:longint;x,p:int64; f,f2:text;
begin
 assign(f,'ssnd.in');
 reset(f);
 assign(f2,'ssnd.out');
 rewrite(f2);
 readln(f,t);
 for i:=1 to t do
  begin
   readln(f,x);
   c:=1;
   p:=calc(x) mod 9973;
   writeln(f2,c,' ',p);
  end;
 close(f2);
 close(f);
end;

begin
 ciur;
 afis;
end.