「CodeNote」 CF743C(思维)

Posted by Dawn-K's Blog on April 23, 2020

题目链接

题目

给你一个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;
}