90pts
查看原帖
90pts
1049379
jhlcxoi114514楼主2025/1/18 11:00
#include<bits/stdc++.h>
#define int long long
#define INF 1000000000
const int N=1e4+10;
using namespace std;
struct node{
	int d,z;
}b[N][100];
int n,a[N],len[N],m1,m2,Min=INF;
void Fen(int k,int n){
	int j=0;
	int le=sqrt(n);
	for(int i=2;i<=le;i++){
		if(n%i==0){
			b[k][++j].d=i;
			while(n%i==0){
				b[k][j].z++;
				n/=i;
			}
		}
	}
	if(n>1){
		b[k][++j].d=n;
		b[k][j].z=1;
	}
	len[k]=j;
} 
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
//	freopen("cell.in","r",stdin);
//	freopen("cell.out","w",stdout); 
	cin>>n;
	cin>>m1>>m2;
	Fen(0,m1);
	for(int i=1;i<=len[0];i++){
		b[0][i].z*=m2;
	}
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	Fen(i,a[i]);
    }
    for(int i=1;i<=n;i++){
    	bool flag=1;
    	int max_time=-INF; 
    	for(int j=1;j<=len[0];j++){
    		if(b[i][j].d!=b[0][j].d&&b[0][j].z!=0){
    			flag=0;
    			break;
    		}
    	}
    	if(flag){
    		for(int j=1;j<=len[i];j++){
			    int l=ceil(b[0][j].z*1.0/b[i][j].z);
    			max_time=max(max_time,l);
    		}
    		Min=min(Min,max_time);
    	}
    }
    if(Min==INF) cout<<-1;
    else{
    	cout<<Min;
    }
}


WA#7

玄关

2025/1/18 11:00
加载中...