HDU 5428

来源:互联网 发布:网络监测工具 编辑:程序博客网 时间:2024/05/21 10:09

 一道水题,之前题意一直理解错了。

  题意:每个数都有质因子,然后加上它本身,从这些数中找出最小的两个相乘,没有就输出-1。比如4:2,2,4(三个),注意long long。

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;long long a[110],b[11000];int main(){    int T,n;    scanf("%d",&T);    while(T--)    {        int cnt=0;        scanf("%d",&n);        for(int i=0;i<n;i++)        {            scanf("%I64d",&a[i]);            int c=a[i];            for(int j=2;j*j<=c;j++)                while(c%j==0)                    {                        c/=j;                        b[cnt++]=j;                    }            if(c>1)                b[cnt++]=c;        }        sort(b,b+cnt);        printf("%I64d\n",cnt<2?-1:b[0]*b[1]);    }    return 0;}

0 0