洛谷P5253 [JSOI2013]丢番图

洛谷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 (xn)(yn)=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=((n2+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;
}

猜你喜欢

转载自blog.csdn.net/weixin_46975572/article/details/117000990