题目:给你一个数k,求所有使得1/k = 1/x + 1/y成立的x≥y的整数对。
分析:数论,枚举。枚举所有在区间(k+1,2k)上的y即可,当1/k - 1/y的结果分子为1即为一组解。
说明:自从去郑州招聘回来,状态一直不好╮(╯▽╰)╭。
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int a[10011];
int b[10011];
int main()
{
int n;
while (~scanf("%d",&n)) {
int m = n<<1,count = 0;
for (int i = n+1 ; i <= m ; ++ i) {
if (i*n % (i-n) == 0) {
a[count] = i*n/(i-n);
b[count] = i;
count ++;
}
}
printf("%d\n",count);
for (int i = 0 ; i < count ; ++ i)
printf("1/%d = 1/%d + 1/%d\n",n,a[i],b[i]);
}
return 0;
}