丢番图
题目大意
1x + 1y = 1n
求上述方程的解的个数,n为常数。
数据范围
对于
100
%的数据,
n
≤
题解
1x + 1y = 1n
x+yxy = 1n
xy
=
n
(x +
y
)
xy -
n
(x +
y
)=0
xy - nx - ny + n2 = n2
(
n
-x )*(
n
-y )=
n2
(
n
-x )=
n2n−y
不难看出,题目就是让我们求 n2 的因数个数。
Code(Pascal)
var
n,ans,u:int64;
i,sx,l:longint;
begin
readln(n);
ans:=1;
sx:=trunc(sqrt(n));
i:=2;
for i:=2 to sx do
if n mod i=0 then
begin
u:=0;
while n mod i=0 do
begin
n:=n div i;
inc(u);
end;
ans:=ans*(u+u+1);
end;
if n>1 then ans:=ans*3;
ans:=ans div 2+ans mod 2;
writeln(ans);
end.