题目描述
输入正整数k,遇到文件末尾结束。找到所有的正整数x和y(x大于等于y),使得1/k=1/x+1/y。
输入
一行输入一个正整数k。
输出
先在第一行输出解的个数,再每行输出一个表达式。
样例输入
2
样例输出
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
观察输出样例可以看出输出为 1/k = 1/y + 1/x
的形式且y>=x>k
。通过化简可以用x,k来表示y得y=k*x/(x-k)
当y为整数时(即k*x%(x-k)==0
)说明此时的x,y符合条件。
#include <iostream>
using namespace std;
int main() {
int k, count = 0;
cin >> k;
int* arr = new int[k];
for (int x = k + 1; x <= 2 * k; ++x) {
if (k * x % (k - x) == 0) {
arr[count] = x;
count++;
}
}
cout << count << endl;
for (int i = 0; i < count; ++i)
printf("1/%d = 1/%d + 1/%d\n", k, k * arr[i] / (arr[i] - k), arr[i]);
return 0;
}