acdream 1077(数学)

来源:互联网 发布:c语言输出文本文件 编辑:程序博客网 时间:2024/05/21 13:23

题意:给出一个数字n,要求不比n大的三个数字的最小公倍数。
题解:最小公倍数要最大,最优是三个最大公约数是1的数字相乘,所以如果n是奇数肯定满足n*(n-1)(n-2)最大,如果n是偶数,就要看n是否能被3整除,如果n % 3 != 0,那么可以满足n(n-1)(n -3)最大,否则(n-3) % 3 == 0,只能取(n-1)(n-2)*(n-3)为解。

#include <stdio.h>long long n;int gcd(int a, int b) {    return b == 0 ? a : gcd(b, a % b);}int main() {    while (scanf("%lld", &n) == 1) {        if (n == 1)            printf("1\n");        else if (n == 2)            printf("2\n");        else {            if (n % 2 == 1)                printf("%lld\n", n * (n - 1) * (n - 2));            else {                if (n % 3 == 0)                    printf("%lld\n", (n - 1) * (n - 2) * (n - 3));                else                    printf("%lld\n", n * (n - 1) * (n - 3));            }        }    }    return 0;}
0 0