题目大意:输入k,求出所有x,y满足 1/k = 1/x + 1/y。

解题思路:根据样例可得y小于x,y的范围为k+1~2*k。循环求出x。

ac代码:


#include <iostream>
using namespace std;
int k, sum;
int main()
{
while (scanf("%d", &k)!=EOF){
sum = 0;
for (int i=k+1; i<=k*2; i++)
if (1.0*(k*i)/(i-k) == (int)(1.0*(k*i)/(i-k)))
sum++;
printf("%d\n", sum);
for (int i=k+1; i<=k*2; i++)
if (1.0*(k*i)/(i-k) == (int)(1.0*(k*i)/(i-k)))
printf("1/%d = 1/%d + 1/%d\n", k, (int)(1.0*(k*i)/(i-k)), i);
}
return 0;
}