题意:将一个分数(1/z)分解成两个分数(1/x 和 1/y)的和的形式
首先我们不妨设x >= y(1/x <= 1/y) 显然 y是大于z的 而当y>2z时 1/y 小于 1/z 的一半 而1/x又是小于1/y的 所有y不能大于2z
所以y的范围是(z,2z] 枚举y 计算x即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#define scnaf scanf
#define cahr char
#define bug puts("bugbugbug");
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int mod=1000000007;
const int maxn=6+10;
const int inf=1e9;
int main()
{
int k;
while(~scanf("%d",&k))
{
vector<pii>ans;
int x,y;
for(int y=k+1,x;y<=2*k;y++)
{
x=k*y/(y-k);
if(x*y==k*(x+y)) ans.push_back((pii){x,y});
}
printf("%d\n",ans.size());
for(int i=0;i<ans.size();i++)
printf("1/%d = 1/%d + 1/%d\n",k,ans[i].first,ans[i].second);
}
}