Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <numeric>
- #include <string>
- #include <cstring>
- #include <set>
- #include <map>
- #include <vector>
- #include <queue>
- #include <iostream>
- #include <iterator>
- #include <cmath>
- #include <cstdio>
- #include <cstdlib>
- #include <sstream>
- using namespace std;
- typedef long long ll;
- typedef vector<int> VI;
- typedef vector<vector<int> > VVI;
- typedef pair<int, int> PII;
- #define FOR(i, x, y) for(ll i=x; i<=y; i++)
- #define FORD(i, x, y) for (ll i = x; i >= y; --i)
- #define REP(i, n) for(ll i=0; i<n; i++)
- #define REPD(i, n) for(ll i = n - 1; i >= 0; --i)
- #define ALL(c) (c).begin(), (c).end()
- #define SORT(c) sort(ALL(c))
- #define UNIQ(c) SORT(c),(c).resize(unique(ALL(c))-(c).begin())
- #define SZ(c) (int)(c).size()
- #define CLEAR(x) memset(x,0,sizeof x)
- #define FILL(x,v) memset(x,v,sizeof x)
- #define pb push_back
- #define mp make_pair
- #define X first
- #define Y second
- const double eps = 1.0e-11;
- const double pi = acos(-1.0);
- ll gcd(ll a, ll b) {
- ll res = 0;
- while(a && b) {
- if (a > b)
- a %= b;
- else
- b %= a;
- }
- return a + b;
- }
- ll lcm(ll a, ll b) {
- return a * b / gcd(a, b);
- }
- int main() {
- ll n;
- cin >> n;
- ll res = 1;
- FORD(t, n, max(1ll, n - 10000)) {
- if (t * (n - 1) * (n - 2) <= res)
- break;
- FORD(j, n - 1, max(1ll, n - 10000)) {
- if (j * (n - 2) * t <= res)
- break;
- FORD(i, n - 2, 1) {
- if (i * j * t <= res)
- continue;
- ll tmp = lcm(i, j);
- if (tmp * t <= res)
- continue;
- res = max(res, lcm(t, tmp));
- }
- }
- }
- cout << res << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement