这是什么毒瘤数据,代码实在挑不出毛病了qwp。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[50000005],g=-1,s,ans=0;
bool b[50000005];
int fc(int x) {
if(x==1)return 0;
if(b[x]==1)return 1;
int minn=1<<30;
for(int i=2; i*i<=x; i++) {
if(x%i==0){
int xx=fc(i),yy=fc(x/i);
if(xx==-1||yy==-1)continue;
minn=min(minn,xx+yy);
}
}
if(minn!=1<<30)return minn;
else return -1;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1; i<=n; i++) {
cin>>a[i];
if(g==-1)g=a[i];
else g=__gcd(g,a[i]);
}
for(int i=1; i<=m; i++)cin>>s,b[s]=true;
for(int i=1; i<=n; i++) {
int j=fc(a[i]/g);
if(j<0)cout<<-1,exit(0);
else ans+=j;
}
cout<<ans;
return 0;
}