【51nod】【数学】最大的最大公约数
题目
解题思路
ai的值挺小的可以外层从小到大枚举答案
然后里层枚举其倍数,看是否在数列中出现过2次及以上
若能找到,即为答案
代码
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[50010];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for (int i=a[n-1];i>0;i--)
{
int da=0;
for (int j=1;j*i<=a[n];j++)
{
int x=j*i;
int w=lower_bound(a+1,a+n+1,x)-a;
if (x==a[w])
{
da++;
if (da>1)
{
printf("%d\n",i);
break;
}
}
}
if (da>1) break;
}
return 0;
}