Cod sursa(job #603220)
Utilizator | UAIC.VlasCatalin ctlin04 | Data | 15 iulie 2011 02:24:08 |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 0 |
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);
for j:=2 to trunc(sqrt(n)) do
if (a[j]=false) and (n mod j=0) then begin
p:=1; d:=0; l:=n;
repeat
l:=l div j;
inc(d);
p:=p*j;
until l mod j<>0;
k:=(k mod 9973)*((d+1) mod 9973);
s:=(trunc(s) mod 9973)*((p*j-1) mod 9973)/(j-1);
end;
if s=1 then begin
k:=2;
s:=(n+1) mod 9973;
end;
writeln(fo,k mod 9973,' ',trunc(s) mod 9973);
k:=1; s:=1;
end;
close(fo);
end.