欢迎访问我的Uva题解目录哦 https://blog.csdn.net/richenyunqi/article/details/81149109
题目描述
题意解析
输入正整数k,找到所有的正整数 x ≥ y x≥y x≥y,使得 1 k = 1 x + 1 y \frac{1}{k}=\frac{1}{x}+\frac{1}{y} k1=x1+y1
算法设计
显然,当 x ≥ y x≥y x≥y时,y的取值范围为 y ∈ [ k + 1 , k + k ] y \in [k+1,k+k] y∈[k+1,k+k],只需枚举y,如果 1 k − 1 y \frac{1}{k}-\frac{1}{y} k1−y1的分子能够化简成1,即分子能够整除分母,就找到了一组满足条件的x和y。
C++代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int k;
while(cin>>k){
vector<pair<int,int>>v;
for(int i=k+1;i<=k+k;++i)
if(i*k%(i-k)==0)//分母对分子的余数为0
v.push_back({
i*k/(i-k),i});//找到了一组满足条件的x与y
printf("%d\n",v.size());
for(auto&i:v)
printf("1/%d = 1/%d + 1/%d\n",k,i.first,i.second);
}
return 0;
}