算法训练 最大最小公倍数

最大最小公倍数

#include<iostream>
using namespace std;
/*****getlcd()求两个数的最大公约数**********/ 
long long int getlcd(long long int a, long long int b){
	return (a%b==0?b:getlcd(b, a%b));
}
/****getmc()求三个数的最小公倍数*********/ 
long long int getmc(long long int a, long long int b, long long int c){ 
	long long int t=a*b/getlcd(a, b);
	t=t*c/getlcd(t, c);
	return t;
}
int main(){	
	int n;
	cin>>n;
	long long int a=1, b=2, c=3, ans=6;
	for(int i=4; i<=n; i++){ //贪心 
		long long int e=getmc(a, b, i);
		long long int f=getmc(a, c, i);
		long long int g=getmc(b, c, i);
		if(e>f&&e>g&&e>ans){
			c=i; ans=e;
		}else if(f>e&&f>g&&f>ans){
			b=i; ans=f;
		}else if(g>e&&g>f&&g>ans){
			a=i; ans=g;
		}
	} 
	cout<<ans<<endl;
	return 0;
}
posted @ 2019-02-13 17:45  A-Little-Nut  阅读(208)  评论(0编辑  收藏  举报