10分WA,QAQ
查看原帖
10分WA,QAQ
602932
NumberTrart楼主2023/1/6 11:41

(type=namespace)P说:额,这不关我质数领域的事

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
namespace P/*PRIME*/
{
    typedef long long ll;
    ll f(ll a,ll b)
    {
        ll ans=1;
        for(int i=1;i<=b;i++)
            ans*=a;
        return ans;
    }
    bool p[30005];
    int plist[30005],pcnt;
    int needp[30005][3250];
    void setp()
    {
        std::memset(p,true,sizeof(p));
        p[0]=p[1]=false;
        for(int i=2;i<=30000;i++)
            if(p[i])
            {
                plist[pcnt]++;
                for(int j=2;i*j<=30000;j++)
                    p[i*j]=false;
            }
        for(int i=1;i<=pcnt;i++)
            for(int j=1;j<=std::log2(30000)&&f(plist[i],j)<=30000;j++)
                for(int k=1;f(i,j)*k<=30000;k++)
                    needp[f(i,j)*k][i]=j;
    }
};//质数领域
int n,s[10005],m1,m2,need[3250],t[10005],minn=2147483647,mink=-1;
int main()
{
    cin>>n>>m1>>m2;
    for(int i=1;i<=n;i++)
        scanf("%d",s+i);
    P::setp();
    for(int i=1;i<=P::pcnt;i++)
        need[i]=P::needp[m1][i]*m2;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=P::pcnt;j++)
            if(need[j])
                t[i]=max(t[i],(P::needp[s[i]][j]==0)?2147483647:int(ceil(need[j]*1.0/P::needp[s[i]][j])));
    for(int i=1;i<=n;i++)
        if(t[i]<minn)
        {
            minn=t[i];
            mink=i;
        }
    if(minn==2147483647) cout<<-1;
    else cout<<minn;
    return 0;
}
2023/1/6 11:41
加载中...