Cod sursa(job #573690)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 6 aprilie 2011 15:03:52
Problema Suma si numarul divizorilor Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 0.98 kb
var v:array[1..1000000] of boolean;
    pr:array [1..80000] of int64;
    ii, i, j, m, t:longint;
    nr, s, p, r, x, pp:int64;
    f, g:text;

begin
assign (f, 'ssnd.in'); reset (f);
assign (g, 'ssnd.out'); rewrite (g);

{ciurul lui eratostenos}
m:=1; pr[m] :=2;
i:=3;
while i <= 1000000 do
  begin
  if v[i]= false then
    begin
    j:= i;
    while j <= 1000000 do begin v[j]:=true; j:=j+i+i; end;
    m:=m+1;
    pr[m]:=i;
    end;
  i:=i+2;
  end;

read (f, t);
for ii := 1 to t do
  begin
  nr:=1; s:=1;
  read (f, x);
  i:=0;
  while x<>1 do
    begin
    i:=i+1;
    if x mod pr[i] = 0 then
      begin
      p:=0;
      r:=x;
      while x mod pr[i]=0 do
        begin
        p:=p+1;
        x:= x div pr[i];
        end;
      nr:=nr*(p+1);     {formula numar}

      r:=r div x * pr[i];  {}

      s:=(s*(r-1)div(pr[i]-1));         {formula suma}
      end;
    end;
  writeln (g, nr,' ', s mod 9973);
  end;

close (f); close (g);
end.