丢番图
题目链接:丢番图

解题思路
先推一下式子:
1
x
+
1
y
=
1
n
\frac{1}{x}+\frac{1}{y}=\frac{1}{n}
x1+y1=n1
x
+
y
x
y
=
1
n
\frac{x+y}{xy}=\frac{1}{n}
xyx+y=n1
n
x
+
n
y
=
x
y
nx+ny=xy
nx+ny=xy
n
x
+
n
y
−
x
y
=
0
nx+ny-xy=0
nx+ny−xy=0
n
x
+
n
y
−
x
y
+
n
2
=
n
2
nx+ny-xy+n^2=n^2
nx+ny−xy+n2=n2
(
x
−
n
)
(
y
−
n
)
=
n
2
(x-n)(y-n)=n^2
(x−n)(y−n)=n2
显然,每一个
(
x
−
n
)
(x-n)
(x−n) 都有一个唯一的
(
y
−
n
)
(y-n)
(y−n) 与其对应。
那么我们就可以分解质因数,累乘一下即可。
code
#include<iostream>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;
int n;
int ans=1;
signed main()
{
cin>>n;
for(int i=2;i<=sqrt(n);i++)
{
int s=0;
while(n%i==0)
n/=i,s++;
ans*=s*2+1;
}
if(n>1)
ans*=3;
cout<<(ans+1)/2<<endl;
}

这篇博客探讨了丢番图方程的解题思路,通过数学推导展示了如何将问题转化为质因数分解,从而找到唯一对应解。代码实现中,博主使用了循环和质因数分解来求解,特别地,当n为质数时,解的数量会翻倍。此篇内容适合对数论和算法感兴趣的读者。
928





