丢番图
题目大意
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.
本文介绍了一种特殊的丢番图方程的求解方法,通过数学转换将原问题转化为求特定整数的因数个数问题,并提供了一段Pascal语言实现的示例代码。
564

被折叠的 条评论
为什么被折叠?



