题目描述
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;
}