比赛 4043级NOIP2022欢乐赛3rd 评测结果 AAAATTTTTT
题目名称 GCD和LCM问题 最终得分 40
用户昵称 op_组撒头屯 运行时间 19.115 s
代码语言 C++ 内存使用 4.28 MiB
提交时间 2022-11-04 21:54:21
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=50000+5;
typedef long long ll;
const ll inf=0x3f3f3f3f3f3f;
int n,q; 
int a[N],b[N]; 
int gcd(int x,int y){
	if (y==0)return x;
	return gcd(y,x%y);
}
int main(){
	freopen ("gcdlcm.in","r",stdin);
	freopen ("gcdlcm.out","w",stdout);
	scanf("%d%d",&n,&q);
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i]); 
	}
	for (int i=1;i<=n;i++){
		scanf("%d",&b[i]);
	}
	while(q--){
		int opt,l,r,k;scanf("%d%d%d",&opt,&l,&r);
		if (opt==1){
			scanf("%d",&k);
			for (int i=l;i<=r;i++)a[i]=k;
		} 
		else{
			ll ans=inf; 
			for (int i=l;i<=r;i++){
				ll p=gcd(a[i],b[i]);
				ans=min(ans,1ll*a[i]*b[i]/(p*p));
			}
			printf("%lld\n",ans);
		}
	} 
	return 0;
}