题目描述

zls 有一个整数n,他想将 $1 – n $这 n 个数字分成两组,每一组至少有一个数,并且使得两组数字的和
的最大公约数最大,请输出最大的最大公约数。

输入

输入一行,一个整数n。
$$2 \le n  \le 10^9$$

输出

输出一行一个整数表示答案。

样例输入

6

样例输出

7

题解

#include <iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
int main() {
    ll n;
    cin >> n;
    if (n == 2) {
        return puts("1");
    } else {
        ll sum = (n + 1ll) * n / 2ll;
        for (ll i = 2ll;; ++i) {
            if (sum % i == 0) {
                cout << sum / i << endl;
                break;
            }
        }
    }
    return 0;
}