Contents
  1. 1. 题目:
  2. 2. 分析:

题目:

输入正整数k,找到所有的正整数 x >= y,输的 1/k = 1/x + 1/y

分析:

x >= y, 1/x <= 1/y
(x越大,1/x越小)
∴ 1/k <= 2/y
∴ y <= 2*k
∴ 枚举y,范围[k + 1, 2k]

1/x = 1/k - 1/y
x = k * y / (y - k)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;

int main()
{

int x, y, k;
while(scanf("%d", &k) != EOF){
for(y = k + 1; y <= 2 * k; y++){
if((k * y) % (y - k) == 0){ //x是整数
int x = (k * y) / (y - k);
if(x >= y)
printf("1/%d = 1/%d + 1/%d\n", k, x, y);
}
}
}
return 0;
}
Contents
  1. 1. 题目:
  2. 2. 分析: