HDU5428质因数分解变形式

来源:互联网 发布:淘宝差评对店铺的影响 编辑:程序博客网 时间:2024/06/05 06:54

这题当时一定是脑抽了,已经想到了是质因数分解之后的最小俩个质因数的相乘,

竟然还写错,int以内的质数有很多,看来我是想多了。

其实最简单的方法就是把每个数质因数分解之后加入vector中排个序即可,

然后直接直到vector的个数,很简单。另外注意这题要用LL。

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<map>#include<cctype>#include<cmath>#include<set>#include<vector>#include<queue>#include<stack>#include<algorithm>#define LL long longusing namespace std;const LL N=(2*1e9)+10;int main(){    LL t;    cin>>t;    while(t--)    {        LL n;        cin>>n;      /*  LL a[110];        for(LL i=0;i<n;i++)        cin>>a[i];        vector<LL> v;        for(LL i=0;i<n;i++)        {            for(LL j=2;j<=sqrt(a[i]*1.0);j++)                while(a[i]%j==0)                {                    a[i]/=j;                    v.push_back(j);                }            if(a[i]!=1)                v.push_back(a[i]);        }*/        vector<LL> v;        for(LL i=0;i<n;i++)        {            LL temp;            cin>>temp;            for(LL j=2;j*j<=temp;j++)                while(temp%j==0)            {                temp/=j;                v.push_back(j);            }            if(temp!=1)                v.push_back(temp);        }        sort(v.begin(),v.end());        if(v.size()<2)            cout<<-1<<endl;        else            cout<<v[0]*v[1]<<endl;    }    return 0;}


0 0