51 nod 1179 最大的最大公约数

枚举暴力解决水题,直接上代码~( ̄▽ ̄~)~。


#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int i,n,t,k=0,j,sum,a[1000005];
    cin>>t;
    while(t--){
    cin>>n;
    k=max(k,n);
    a[n]++;
    }
    for(i=k;i>=1;i--)
    { sum=0;
        for(j=i;j<=k;j+=i)
        {   sum+=a[j];
            if(sum>=2)
            break;
        }
        if(sum>=2)
        break;
    }
    cout<<i<<endl;
    return 0;
}
//此题从最大的开始往下枚举(从而保证第一次枚举到的就是最大的),知道出现当前枚举数的倍数在原数组中且有2个以上时跳出,从而使n方的复杂度简化到n的复杂度。

相关文章: