简单的题目,很容易看懂。
主要是枚举,但是枚举的范围不确定。
从x >= y , 推出 1 / x <= 1 / y,因为 1 / k - 1 / y = 1 / x ,推出 1 / k - 1 / y <= 1 / y,最后得出 y <= 2 * k。
然后就是枚举,暴力过。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int data[15000];
int main()
{
// freopen("1.txt", "r", stdin);
int k, i, j;
while(cin >> k)
{
memset(data, 0, sizeof(data));
j = 0;
for(i = k + 1; i <= 2 * k; i++)
{
if((k * i) % (i - k) == 0)
data[j++] = i;
}
cout << j << endl;
for(i = 0; i < j; i++)
{
printf("1/%d = 1/%d + 1/%d\n", k, (k * data[i]) / (data[i] - k), data[i]);
}
}
return 0;
}