您的位置:首页 > 其它

sgu499

2016-02-23 21:07 211 查看
//暴力求解复杂度为O(n(n-1)/2)

//假设所有输入中最大值为maxp,枚举i=maxp to 1(从大到小枚举),
//如果i是某两个数的约数,则i是所有数的最大最大公约数。
//复杂度 ??

#include<stdio.h>
#include<string.h>

#define maxn 1000005

int num[maxn];
int main()
{
int n,i,j,k;
int maxp=1;
scanf("%d",&n) ;
memset(num,0,sizeof(num));
for(i=1;i<=n;i++)
{
scanf("%d",&k);
num[k]++;
if(k>maxp) maxp = k;
}

for(i=maxp;i>=1;i--)
{
k=0;
for(j=i;j<=maxp;j+=i)
{
if(num[j]) k+=num[j];
if(k>1)
{
printf("%d\n",i);
return 0;
}
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: