蓝桥杯 算法训练---------题解
算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
锦囊1
使用贪心来选择。
锦囊2
当n为奇数时,答案一定是n*(n-1)*(n-2)。
当n为偶数时,答案可能是(n-1)*(n-2)*(n-3),也可能是n*a*b,其中a>=n-3。
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
#include <iostream>
using namespace std;
long long gcd(long long a,long long b){
long long x=a, y=b,r=x%y;
while(r){
x=y;
y=r;
r=x%y;
}
return a*b/y;
}
int main(int argc, char *argv[]) {
int n;
cin>>n;
long long s=0;
for(int i=n;i>=n-3;i--)
for(int j=i-1;j>=n-4;j--)
for(int k=i-2;k>=n-5;k--)
if(s<gcd(gcd(i,j),k))
s=gcd(gcd(i,j),k);
cout<<s<<endl;
return 0;
}