亚历山大的丢番图方程 题解
亚历山大的丢番图方程 题解
题目大意
求解方程\(\frac1x+\frac1y=\frac1n(x\leq y,b\leq10^9)\)的正整数解的个数
解题思路
\[\frac1x+\frac1y=\frac1n\\
x+y=\frac{xy}n\\
nx+ny=xy\\
xy-nx-ny=0\\
(x-n)(y-n)=n^2
\]
只要求一下\(n^2\)的因子个数即可
代码
#include<cstdio>
using namespace std;
#define N 40005
long long ans,sum;
int vis[N],a[N],T,m;
int main(){
for(int i=2;i<=4e4;i++){
if(!vis[i])a[++m]=i;
for(int j=1;j<=m&&i*a[j]<=4e4;j++){
vis[i*a[j]]=1;
if(i%a[j]==0)break;
}
}
scanf("%d",&T);
for(int n,t=1;t<=T;t++){
printf("Scenario #%d:\n",t);
scanf("%d",&n);ans=1;
for(int i=1;i<=m;i++){
sum=0;
while(n%a[i]==0){
n/=a[i];
sum++;
}
ans*=sum*2+1;
}
if(n>1)ans*=3ll;
printf("%lld\n\n",(ans+1)/2);
}
}
浙公网安备 33010602011771号