Cod sursa(job #603287)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 15 iulie 2011 12:36:58
Problema Suma si numarul divizorilor Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 1.36 kb
Program suma_numaru_diviz;
 var a:array [1..1000000] of boolean;
    b1,b2:array [1..1 shl 17] of char;
   n,k,t,l,p,d:int64;
   s:extended;
   i,j:longword;
   fi,fo:text;
begin
assign(fi,'ssnd.in');
 assign(fo,'ssnd.out');
settextbuf(fi,b1);
settextbuf(fo,b2);
reset(fi);
 rewrite(fo);
readln(fi,t);
  for i:=2 to 1000000 do
                if not a[i] then
                  for j:=2 to 1000000 div i do
                                     a[i*j]:=true;
 k:=1;  s:=1;
for i:=1 to t do begin
 readln(fi,n); j:=2; l:=n;
  while (j<=trunc(sqrt(l))) and (n>1) do
   if (a[j]=false) and (n mod j=0) then begin
                                          p:=1; d:=0;
                                          repeat
                                           n:=n div j;
                                            inc(d);
                                            p:=p*j mod 9973;
                                           until n mod j<>0;
                                     k:=k*(d+1) mod 9973;
                                    s:=s*((p*j-1)/(j-1));
                                          end
                               else inc(j);
 if n>1 then begin
 if k=1 then k:=2
        else k:=k+2;
                s:=s*((n*n-1)/(n-1));
               end;
         writeln(fo,k mod 9973,' ',trunc(s) mod 9973);
 k:=1; s:=1;
 end;
close(fo);
end.