A6细胞分裂(用心求点赞)
2026-01-24 23:12:31
发布于:上海
14阅读
0回复
0点赞
#include<algorithm>
#include<iostream>
#include<map>
#include<vector>
using namespace std;
struct node{
int n;
long long cnt;
};
long long m1,m2,n,s,ans;
vector<node>v;
long long solve(long long x){
long long cnt,res=0;
for (int i=0;i<v.size();i++){
long long a=v[i].n,b=v[i].cnt;
cnt=0;
if (①){
return -1;
}
while (x%a==0){
cnt++;
x/=a;
}
res=max(res,②);
}
return res;
}
int main(){
cin>>n>>m1>>m2;
for (int i=2;i<=m1;i++){
if (m1%i==0){
v.push_back(③);
}
while (m1%i==0){
v[v.size()-1].cnt+=④;
m1/=i;
}
}
ans=-1;
for (int i=1;i<=n;i++){
cin>>s;
long long res=solve(s);
if (res!=-1){
if (ans==⑤)ans=res;
else ans=min(ans,res);
}
}
cout<<ans;
return 0;
}
①
②
③
④
⑤
#include<algorithm>
#include<iostream>
#include<map>
#include<vector>
using namespace std;
struct node{
int n;
long long cnt;
};
long long m1,m2,n,s,ans;
vector<node>v;
long long solve(long long x){
long long cnt,res=0;
for (int i=0;i<v.size();i++){
long long a=v[i].n,b=v[i].cnt;
cnt=0;
if (x%a!=0){
return -1;
}
while (x%a==0){
cnt++;
x/=a;
}
res=max(res,b/cnt+(b%cnt!=0));
}
return res;
}
int main(){
cin>>n>>m1>>m2;
for (int i=2;i<=m1;i++){
if (m1%i==0){
v.push_back({i,0});
}
while (m1%i==0){
v[v.size()-1].cnt+=m2;
m1/=i;
}
}
ans=-1;
for (int i=1;i<=n;i++){
cin>>s;
long long res=solve(s);
if (res!=-1){
if (ans==-1)ans=res;
else ans=min(ans,res);
}
}
cout<<ans;
return 0;
}

全部评论 3
6天前 来自 上海
15天前 来自 上海
0阅
5天前 来自 上海
0









有帮助,赞一个