地址:http://acm.bit.edu.cn/mod/programming/view.php?a=536
给定n,问1/X+1/Y=1/n的正整数解有几组(设X<=Y)。
设X=n+a,Y=n+b 代入化简后可得 n*n=a*b. 然后就一目了然了,a与b就是n*n的每一对约数。故答案就是n*n的约数个数+1再除以2。
自己想不到就是想不到。。怎么办T T
#include<iostream>
using namespace std;
int main()
{
int t,n,i,j;
__int64 ans;
scanf("%d",&t);
for(int cs=1;cs<=t;cs++)
{
ans=1;
scanf("%d",&n);
for(i=2;i*i<=n;i++)
{
for(j=0;n%i==0;j++,n/=i);
ans*=(2*j+1);
}
if(n>1) ans*=3; //若还剩一个大质因子
printf("Scenario #%d:\n%I64d\n\n",cs,(ans+1)/2);
}
return 0;
}
本文介绍了一个数学问题的解决方案:如何计算方程1/X+1/Y=1/n的正整数解的数量,并提供了一段C++代码实现。该方法通过将方程转换为n*n=a*b的形式来简化问题,进而利用数论中的约数个数求解。
264

被折叠的 条评论
为什么被折叠?



