42分求调!!
查看原帖
42分求调!!
1328520
qizhonglei楼主2024/8/24 21:26
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[105],zs[80000],cnt,fenjie[35],d[35],ans;
bool is[1000005];
void shai(){
	for(int i=2;i<=1e6;i++){
		if(!is[i]){
			for(int j=i*2;j<=1e6;j+=i)
				is[j]=1;
			zs[++cnt]=i;
		}
	} 
}
void jie(int num){
	for(int i=1;i<=cnt;i++){
		while(num%zs[i]==0){
			num/=zs[i];
			fenjie[i]++;
		}
		if(num==0)
			break;
	}
}
void jie2(int num){
	for(int i=1;i<=cnt;i++){
		while(num%zs[i]==0){
			num/=zs[i];
			d[i]++;
		}
		if(num==0)
			break;
	}
}
signed main(){
	scanf("%lld",&n);
	int s=1; 
	shai();
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		jie(a[i]);
	}
	for(int i=1;i<=29;i++){
		s*=pow(zs[i],fenjie[i]/n);
	}
	jie2(s);	
	for(int i=1;i<=n;i++){
		memset(fenjie,0,sizeof(fenjie));
		jie(a[i]);
		for(int j=1;j<=29;j++){
			if(d[j]>fenjie[j]){
				ans+=(d[j]-fenjie[j]);
			}
		}
	}
	printf("%lld %lld\n",s,ans);
	return 0;
}
2024/8/24 21:26
加载中...