洛谷P5253 [JSOI2013]丢番图
TITLE
思路
1 / x + 1 / y = 1 / n 1/x+1/y=1/n 1/x+1/y=1/n
化 简 得 ( x − n ) ( y − n ) = n 2 化简得(x-n)(y-n)=n^2 化简得(x−n)(y−n)=n2
a n s = ( n 2 的 因 数 个 数 + 1 ) / 2 ans=(n^2的因数个数+1)/2 ans=(n2的因数个数+1)/2
a n s = ( ∏ ( n 的 每 个 质 因 数 的 指 数 ∗ 2 + 1 ) + 1 ) / 2 ans=(\prod{(n的每个质因数的指数*2+1)}+1)/2 ans=(∏(n的每个质因数的指数∗2+1)+1)/2
CODE
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
long long n,sum,ans=1,i;
for(scanf("%lld",&n),i=2;i*i<=n;ans*=(sum<<1)+1,i++)
for(sum=0;n%i==0;n/=i)sum++;
printf("%lld",(ans*(n>1?3:1)+1)>>1);
return 0;
}