【数论】分数拆分

分数拆分

题目大意:

给出一个数k,问满足1/k=1/x+1/y且x>=y的x,y有多少对

原题:

【数论】分数拆分

解题思路:

首先1k=1x+1y\frac{1}{k}=\frac{1}{x}+\frac{1}{y},变式为1k1y=1x\frac{1}{k}-\frac{1}{y}=\frac{1}{x},然后再变成1(ky)/(yk)=1x\frac{1}{(k*y)/(y-k)}=\frac{1}{x},所以得出(ky)/(yk)=x(k*y)/(y-k)=x,然后直接枚举y就可以了

解题思路:

#include<cstdio>
using namespace std;
long long k,ans;
int main()
{
	scanf("%dll",&k);
	for (long long y=k+1;(y*k)/(y-k)>=y;++y)//枚举y,当x<y时就退出
	  if ((y*k)%(y-k)==0) ans++;//判断是否为整数
	printf("%lld",ans);
}