T2的特殊情况?
  • 板块灌水区
  • 楼主xiaozhangma
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/28 17:49
  • 上次更新2023/11/3 00:40:45
查看原帖
T2的特殊情况?
47911
xiaozhangma楼主2023/8/28 17:49

应该是被特殊情况卡了罢

#include<bits/stdc++.h>
#define LL long long
#define F(x,s,t) for(int x=s;x<=t;x++)
using namespace std;
int read(){
	int x=0,f=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int gcd(int a, int b){
	return b ? gcd(b, a % b) : a;
}
const int N = 5e5 + 10;
int a[N], b[N];
bool h[N];
int main(){
 	int n = read();
	int m = read();
 	
 	int Gcd = 0;
	F(i, 1, n){
		a[i] = read();
		Gcd = gcd(Gcd, a[i]);
	}
	
	F(i, 1, n)a[i] /= Gcd;
 	F(i, 1, m)b[i] = read();
	 
	sort(b + 1, b + m + 1);
 	
 	LL ans = 0;
 	
 	F(i, 1, n){
 		for(int j = m; j >= 1; j -- ){
 			
 			if(b[j] == 1 && a[i] != 1){
 				puts("-1");
 				return 0;
			}
 			while(a[i] % b[j] == 0){
 				a[i] /= b[j];
 				ans ++ ;
			}
			if(a[i] == 1)break;
			
		}
		if(a[i] != 1){
			puts("-1");
			return 0;
		}
	}
	
	printf("%lld\n", ans);
	return 0;
}
2023/8/28 17:49
加载中...