这道题是一个数论题,下面慢慢来证明:
1/x+1/y=1/n;
1/y右移—> 得1/x=y-n/ny
令y-n=a 即n=y-a
1/x=a/y(y-a) 即 1/x=a/(y*y-y*a)
使等式成立即a整除(y*y-y*a)
即a整除y*y
最后得答案为y*y的因子数
然后用约数个数定理快速解决问题
注意要
x<=y
那么有由于y*y必定完全平方数,那么
最后结果 为res/2+1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long n;
scanf("%lld",&n);
long long sum=n*n;
long long res=1;
for(long long i=2;i*i<=sum;i++)
{
long long ans=1;
while(sum%i==0)
{
ans++;
sum/=i;
}
res*=ans;
}
printf("%lld\n",res/2+1);
}
}