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