您的位置:首页 > 其它

HDU5207

2015-04-22 16:48 155 查看
谁能告诉我这样的复杂度怎么算?以为会超时的说。。。

#include <stdio.h>
#include <string.h>
#define maxn 100100
int a[maxn],map[maxn],ans[maxn];
int max(int x,int y) {return x>y?x:y;}
int main()
{
    int T,cas=0;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        memset(map,0,sizeof(map));
        memset(ans,0,sizeof(ans));
        int maxx=0;
        int i,j,k;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);map[a[i]]++;maxx=max(maxx,a[i]);
        }
        
        for(i=2;i<=maxx;i++)
        {
            for(j=i;j<=maxx;j+=i)
                if(map[j]) ans[i]+=map[j];
        }
        int ret=1;
        for(i=maxx;i>=2;i--)
        {
            if(ans[i]>1) {ret=i;break;}
        }
        printf("Case #%d: %d\n",++cas,ret);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: