题意:给一个数N,让你找出所有的整数 x >= y,使得满足这个等式:
1/N = 1/x + 1/y
解法:由于 x >= y,所以只需要枚举y,y的范围显然是在[N + 1,2 * N]之间,再看x是否合法即可。
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 1e9 + 2015;
using namespace std;
int ansx[100005];
int ansy[100005];
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0);
//freopen("int.txt","r",stdin);
//freopen("out.txt","w",stdout);
int N;
int first = 1;
int x,y;
while(cin >> N)
{
int num = 0;
for(y = N + 1;y <= 2 * N;y++)
{
if( (N * y) % (y - N) == 0)
{
num++;
ansx[num] = (N * y) / (y - N);
ansy[num] = y;
}
}
printf("%d\n",num);
for(int i = 1;i <= num;i++)
printf("1/%d = 1/%d + 1/%d\n",N,ansx[i],ansy[i]);
}
return 0;
}