超级慢的解法
2026-09-15 19:54:38
发布于:福建
#include <bits/stdc++.h>
using namespace std;
int x1[1000];
int n1[1000];
int x2[1000];
int n2[1000];
int t[1000];
void get_x1_n1(int m1,int m2){
for(int i=2;i<=m1;i++){
if(m1%i==0){
for(int j=0;j!=-1;j++){
if(x1[j]==i||x1[j]==0){
m1/=i;
x1[j]=i;
n1[j]+=m2;
i=1;
break;
}
}
}
}
}
void get_x2_n2(int Num){
for(int i=2;i<=Num;i++){
if(Num%i==0){
for(int j=0;j!=-1;j++){
if(x2[j]==i||x2[j]==0){
Num/=i;
x2[j]=i;
n2[j]+=1;
i=1;
break;
}
}
}
}
}
bool check(){
int index=0;
for(int i=0;x1[i]!=0;i++){
int ok=false;
for(int j=0;x2[j]!=0;j++){
if(x1[i]==x2[j]){
ok=true;
break;
}
}
if(!ok) return false;
}
return true;
}
int get_time(){
int time1=0;
int time2=0;
for(int i=0;x2[i]!=0;i++){
for(int j=0;x1[j]!=0;j++){
if(x2[i]==x1[j]){
if(n1[j]%n2[i]!=0) time1=n1[j]/n2[i]+1;
else time1=n1[j]/n2[i];
}
if(time1>time2) time2=time1;
}
}
return time2;
}
int main(){
int n,m1,m2,Num;
cin>>n>>m1>>m2;
get_x1_n1(m1,m2);
int index=0;
for(int i=0;i<n;i++){
cin>>Num;
get_x2_n2(Num);
if(check()){
t[index]=get_time();
index++;
}
for(int j=0;j<1000;j++){
x2[j]=0;
n2[j]=0;
}
}
int time=t[0];
for(int i=0;t[i]!=0;i++){
if(t[i]<time) time=t[i];
}
if(m11) cout<<0;
else if(time0) cout<<-1;
else cout<<time;
}
这里空空如也

有帮助,赞一个