您的位置:首页 > 其它

算法训练 最大最小公倍数

2016-12-27 14:05 281 查看
问题描述

已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

输入格式

输入一个正整数N。

输出格式

输出一个整数,表示你找到的最小公倍数。

样例输入

9

样例输出

504

数据规模与约定

1 <= N <= 106。

很水的一道题,想通如果是偶数的情况就搞定了,另外要注意下数据很大,需要long long,而且...我才知道在求一个long long值运算时,进行运算的数据也需要是long long 才可以...于是我嫌麻烦,就全部long long 了,反正内存多得的是..

#include <stdio.h>
int main(){
long long N;
long long i,j;
long long max,max1;
scanf("%I64d",&N);
if(N%2!=0){
max=N*(N-1)*(N-2);
printf("%I64d",max);
return 0;
}
for(i = N-3;i>1;i--){
for(j=i-1;j>1;j--){
if(!(N%j||i%j))break;//有公约
if(!(N%j||(N-1)%j))break;//有公约
if(!(i%j||(N-1)%j))break;//有公约
}
if(j==1){
max1 = N*(N-1)*i;
break;
}
}
max = (N-1)*
4000
(N-2)*(N-3);
max = (max>max1)?max:max1;
printf("%I64d",max);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: