Cod sursa(job #1199418)

Utilizator atatomirTatomir Alex atatomir Data 19 iunie 2014 14:11:14
Problema Suma si numarul divizorilor Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 1.1 kb
const def=1005000;
      modd=9973;
var t,ti:longint;
    n,i,h:longint;
    c:array[0..def+5]of boolean;
    prim:array[0..3000]of longint;
    nr,sum,p,d:int64;

procedure ciur();
var i,ii,hh,j,h:longint;
begin
  prim[0] := 0;
  for i := 2 to def do c[i] := true;
  h := trunc(sqrt(def));
  for i := 2 to h do
    if c[i] then
    begin
      inc(prim[0]); prim[prim[0]] := i;
      ii := i*i; hh := def div ii;
      for j := 1 to hh do c[ii*j] := false;
    end;
end;

begin
  assign(input,'ssnd.in'); reset(input);
  assign(output,'ssnd.out'); rewrite(output);

  ciur();

  readln(t);
  for ti := 1 to t do
  begin
    readln(n);
    nr := 1; sum := 1;
    h := trunc(sqrt(nr));
    i := 0;
    while prim[i+1] <= n do
    begin
      inc(i);
      p := 0; d := prim[i];
      while n mod prim[i] = 0 do
      begin
        inc(p); d := d * prim[i];
        n := n div prim[i];
      end;
      nr := (nr * (p+1))mod modd;
      sum := (sum * (((d-1) div (prim[i]-1)) mod modd))mod modd;
    end;
    writeln(nr,' ',sum);

  end;


  close(input);
  close(output);
end.