# 题目描述

给你一个正整数 n ,找出满足下述条件的 中枢整数 x

  • 1 和 x 之间的所有元素之和等于 xn 之间所有元素之和。

返回中枢整数 x 。如果不存在中枢整数,则返回 -1 。题目保证对于给定的输入,至多存在一个中枢整数。

提示:

  • 1 <= n <= 1000

# 测试用例

用例1:

  • 输入:n = 8
  • 输出:6
  • 解释:6 是中枢整数,因为 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21 。

用例2:

  • 输入:n = 1
  • 输出:1
  • 解释:1 是中枢整数,因为 1 = 1 。

用例3:

  • 输入:n = 4
  • 输出:-1
  • 解释:可以证明不存在满足题目要求的整数。

# 代码实现

/**
 * @param {number} n
 * @return {number}
 */

// 输入

var __readline = require("readline-sync");
__readline.setDefaultOptions({ prompt: "" });
var readline = __readline.prompt;

console.log("请输入n: ");
const n = Number(readline());

var pivotInteger = function (n) {
  // 1 2 3 4

  // 先求1到n的和 }

  var sum = 0;

  for (let i = 1; i <= n; i++) {
    sum += i;
  }

  // 从后往前去掉元素

  // 要减的值
  let gap = 0;

  for (let i = n; i >= 1; i--) {
    let preVal = sum - gap;
    // console.log("preVal: ", preVal);
    gap += i;
    let postVal = gap;
    // console.log("postVal: ", postVal);
    if (preVal === postVal) {
      return i;
    }
  }
  return -1;
};

const res = pivotInteger(n);
console.log("结果为: ", res);

/*
请输入n:
1
结果为:  1
*/

/*
请输入n:
8
结果为:  6
*/

/*
请输入n:
5
结果为:  -1
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63