分数拆分
题目大意:
给出一个数k,问满足1/k=1/x+1/y且x>=y的x,y有多少对
原题:
解题思路:
首先1k=1x+1y\frac{1}{k}=\frac{1}{x}+\frac{1}{y}k1=x1+y1,变式为1k−1y=1x\frac{1}{k}-\frac{1}{y}=\frac{1}{x}k1−y1=x1,然后再变成1(k∗y)/(y−k)=1x\frac{1}{(k*y)/(y-k)}=\frac{1}{x}(k∗y)/(y−k)1=x1,所以得出(k∗y)/(y−k)=x(k*y)/(y-k)=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);
}