RE Floating-point exception.求调
查看原帖
RE Floating-point exception.求调
776173
Alfa_Romeo_F1楼主2024/10/9 10:46

rt

#include<bits/stdc++.h>
#define int long long 
using namespace std;   
int n;
int prims;
int minn=INT_MAX;
bool flag;
int prime[10000001]; 
int tube[10000001];
bool is_prime(int k)
{
    int m;
    for(m=2;m<=floor(sqrt(k));m++)
    if(k%m==0)return false;
    return true;
}
int m1,m2;
int cell[10000001];
signed main(){
    cin>>n;
    cin>>m1>>m2;
    for(int i=1;i<=n;i++){
        cin>>cell[i];
    }
    for(int i=2;i<=30000+10;i++){
        if(is_prime(i)){
            prims++;
            prime[prims]=i;
        }
    }
    int i=1;
    while(m1!=1){
        if(m1%prime[i]==0){
            while(m1%prime[i]==0){
                tube[i]+=m2;
                m1/=prime[i];
            }
        }
        i++;
    }
        for(int i=1;i<=n;i++){
            int j=1;
            int now=0;
            int nfl=1;
            memset(prime,0,sizeof(prime));
            while(j<=prims){
                if(cell[i]%prime[j]==0){
                    while(cell[i]%prime[j]==0){
                        prime[j]++;
                        cell[i]/=prime[j];
                    }
                }
                j++;
            }
            for(j=1;j<=prims;j++){
                if(tube[j]!=0&&prime[j]==0){
                    nfl=0;
                }
                if(tube[j]!=0&&prime[j]!=0){
                    if(tube[j]%prime[j]==0){
                        now=max(now,tube[j]/prime[j]);
                    }
                    else{
                        now=max(now,tube[j]/prime[j]+1);
                    }
                }
                if(nfl==1){
                    flag=1;
                    if(now<minn){
                        minn=now;
                    }
                }
            }
        }
        if(flag==0){
            cout<<-1<<'\n';
        }
        else{
            cout<<minn<<'\n';
        }
    return 0;
}
2024/10/9 10:46
加载中...