gcd

486 词

题目描述

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

输入

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

输出

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

样例输入

1
6

样例输出

1
7

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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;
}