Pagini recente » Cod sursa (job #3246401) | Cod sursa (job #706254) | Cod sursa (job #2345161) | Cod sursa (job #3167818) | Cod sursa (job #862610)
Cod sursa(job #862610)
var t:integer;
f,g:text;
i,k:longint;
n:int64;
p:array[1..1000005] of boolean;
x:array[1..500005] of longint;
procedure ciur;
const nmax=1000005;
var i,j:longint;
begin
for i:=2 to nmax do
if not p[i] then
begin
j:=i+i;
k:=k+1;
x[k]:=i;
while j<nmax do
begin
p[j]:=true;
j:=j+i;
end;
end;
end;
procedure solve(n:int64);
const md=9973;
var i,nr,d,y:longint;
s,s1:int64;
function putere(a,b:longint):int64;
var i:longint;
begin
putere:=a;
for i:=2 to b do
putere:=(putere*a);
end;
begin
nr:=1;
s:=1;
s1:=1;
i:=1;
d:=0;
y:=trunc(sqrt(n));
while x[i]<=y do
if n mod x[i]=0 then
begin
n:=n div x[i];
d:=d+1;
end
else
begin
if d>0 then
begin
nr:=nr*(d+1);
s:=(s*(putere(x[i],d+1)-1));
s1:=(s1*(x[i]-1));
s:=(s div s1) mod md;
s1:=1;
d:=0;
if n=1 then
break;
if n<1000003 then
if not p[n] then
begin
nr:=nr*2;
s1:=s1*(n-1);
s:=((s*(putere(n,2)-1))div s1) mod md;
n:=1;
s1:=1;
break;
end;
end;
i:=i+1;
end;
if (n>1)and(not p[n]) then
begin
nr:=nr*2;
s:=(s*(putere(n,2)-1));
s1:=(s1*(n-1));
end;
s:=(s div s1) mod md;
writeln(g,nr,' ',s);
end;
begin
ciur;
assign(f,'ssnd.in');
reset(f);
assign(g,'ssnd.out');
rewrite(g);
readln(f,t);
for k:=1 to t do
begin
readln(f,n);
solve(n);
end;
close(f);
close(g);
end.