HDU 5207

来源:互联网 发布:零售业的数据分析 编辑:程序博客网 时间:2024/05/22 17:35

HDU 5207

题目链接:HDU 5207


题意:

从n个数中任意选出2个数,求gcd最大。

分析:
n个数,从大到小找第一个具有它的倍数的值,那就是最大值。


代码实现:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;int n;int x[100010], v[100010];int calc( int N ) {    for (int i = N;i >= 1;i -- ){        int sum = 0;        for (int j = i;j <= N;j += i ){            sum += v[j];            if ( sum >= 2 ) return i;        }    }    return 1;}int main() {    int T,tn=1;    scanf( "%d", &T );        while(T--){        scanf( "%d", &n );        int Max = 0;memset(v,0,sizeof(v));        for ( int i = 1; i <= n; i ++ ) {                scanf( "%d", &x[i] );                Max = max( Max, x[i] );                v[x[i]] ++;        }        int ret = calc( Max );        printf( "Case #%d: %d\n", tn++, ret );    }return 0;}



0 0
原创粉丝点击