http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1632

我们发现n*(n-1)*(n-2)的乘积最大,如果这三个数还两两互质的话那就最棒了。

  1. 如果n是奇数,那么n,n-1,n-2必定两两互质,ans=n*(n-1)*(n-2) 证明:n是奇数,那么n,n-1,n-2一定是两奇加一偶的情况,所以2不可能是公因子。假设p(p>2)是公因子,a,b是n,n-1,n-2中两个不同的数,那么a-b≡0(mod p),这不可能。
  2. 如果n是偶数,这样的话n和n-2必定有公因子2,那么就换成式子n*(n-1)*(n-3)。
  3. 然后仔细思考一下,不行啊,若n本身就能被3整除的话,那么n和n-3就有公因子3。再仔细思考一下,可以得出ans=(n-1)*(n-2)*(n-3),两奇夹一偶的情况。
#include<cstdio>

int main()
{
    long long n, ans;
    while (~scanf("%lld", &n))
    {
        if (n <= 2)     ans = n;
        else if (n & 1) ans = n * (n - 1) * (n - 2);
        else if (n % 3) ans = n * (n - 1) * (n - 3);
        else            ans = (n - 1) * (n - 2) * (n - 3);
        printf("%lld\n", ans);
    }
    return 0;
}

Comments

comments powered by Disqus