Cod sursa(job #743129)

Utilizator vasile_pojogaPojoga Vasile vasile_pojoga Data 3 mai 2012 14:18:58
Problema Suma si numarul divizorilor Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.53 kb
program suma_dv_nr;
var t:integer;
    n,i,s,k:longint;
    p:array[1..1000001] of boolean;
    x:array[1..1000001] of longint;
procedure ciur;
const nmax=1000001;
var i,j:longint;
begin
x[1]:=1; k:=1;
for i:=2 to nmax do
         if not p[i] then
                     begin
                     j:=i; k:=k+1; x[k]:=i;
                     while j<nmax do begin
                                     p[j]:=true;
                                     j:=j+i;
                                     end;
                     p[i]:=false;
                     end;
end;

procedure solve(n:longint);
const md=9973;
var i,s,nr,d,y:longint;

function putere(a,b:longint):longint;
var i:longint;
begin
putere:=a;
for i:=2 to b do putere:=putere*a;
end;

begin
nr:=1;s:=1;i:=2;d:=0;y:=trunc(sqrt(n))+1;
if p[n]=false then begin s:=n+1; nr:=2; end;
while x[i]<y do
        if n mod x[i]=0 then begin
                             d:=d+1;
                             n:=n div x[i];
                             end
                        else begin
                             nr:=nr*(d+1);
                             s:=s*(putere(x[i],d+1)-1)div(x[i]-1) mod md;
                             d:=0;
                             i:=i+1;
                             end;
writeln(nr,' ',s);
end;


begin
ciur;
assign(input,'ssnd.in'); reset(input);
assign(output,'ssnd.out'); rewrite(output);
readln(t);
for k:=1 to t do begin
                 readln(n);
                 solve(n);
                 end;
close(output);
end.