51nod1419

来源:互联网 发布:期货软件开发公司 编辑:程序博客网 时间:2024/04/29 17:34

链接:点击打开链接

题意:给出一个n,从1-n中取三个数使得三个数的最小公倍数最大

代码:

#include <iostream>using namespace std;long long gcd(long long a,long long b){    if(b==0)    return a;    return gcd(b,a%b);}long long lcm(long long a,long long b){    return a/gcd(a,b)*b;}int main(){    long long a[50];            long long i,j,k,n,sum;    while(cin>>n){        if(n==1){            cout<<"1"<<endl;            continue;        }        if(n==2){            cout<<"2"<<endl;            continue;        }        if(n==3){            cout<<"6"<<endl;            continue;        }        sum=-1;        for(i=n;i>=n-5;i--)        for(j=i-1;j>=n-5;j--)        for(k=j-1;k>=n-5;k--)        //这个最大的肯定是最大几个数相乘,因此将前几个数排列组合        sum=max(sum,lcm(lcm(i,j),k));//再比较一下就行        cout<<sum<<endl;             //这是某个大神的做法,详见http://blog.csdn.net/u011475002/article/details/47084339       }                                //这个才是正确做法,不推荐使用我这个       return 0;}


 

 

0 0
原创粉丝点击