算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
#include <iostream>
using namespace std;
int main()
{
long long n;
while (cin >> n)
{
if (n<=2)
{
cout<<n<<endl;
continue;
}
if (n%2 != 0)
cout<<n*(n-1)*(n-2)<<endl;
else
{
if (n%3 != 0)
cout<<n*(n-1)*(n-3)<<endl;
else
cout<<(n-1)*(n-2)*(n-3)<<endl;
}
}
return 0;
}
下面这个代码居然在另外一个OJ上通不过。。真郁闷(上面的也没通过,不过好像是因为本来测试数据就有问题)
# include <stdio.h>
int main()
{
long long n;
scanf("%I64d", &n);
if (n<=2)
{
printf("%d", n);
return 0;
}
if (n%2 != 0)
printf("%I64d", n*(n-1)*(n-2));
else
{
if (n%3 != 0)
printf("%I64d", n*(n-1)*(n-3));
else
printf("%I64d", (n-1)*(n-2)*(n-3));
}
return 0;
}
就是输入输出不一样嘛。。哎