题目
给你一个n(1<=n<=1e4) ,要求找到三个不相同的正整数,满足 1/x + 1/y + 1/z = 2/n 找不到输出-1
思路
这个是个很好的思维题,小学奥数,如果我们将z=n代入,就得到了 1/x + 1/y = 1/n
其实这样还是不好想,1/x = 1/n - 1/y
我们尝试一下y代入n+1,就发现x正好等于n*(n+1)
如果n>1,则x,y,z恰好是不相等的正整数,但是n=1时,1/x + 1/y + 1/z = 2
这个在x,y,z不相等的情况下是无解的(可以分别代入1,2,3,发现加起来小于2,但是xyz再增加只会更小)
综上,
- 如果n>1有解 x : n*(n+1) y : n+1 z : n
- 如果n==1无解
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
int n;
cin >> n;
// x : n*(n+1)
// y : n+1
// z : n
if (n <= 1) {
cout << -1 << endl;
} else {
cout << n * (n + 1) << " " << n + 1 << " " << n << endl;
}
return 0;
}