亚历山大的丢番图方程 题解
题目大意
求解方程(frac1x+frac1y=frac1n(xleq y,bleq10^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:
",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
",(ans+1)/2);
}
}