关注
这段代码时答案给的参考代码: #include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
int f[10005];
vector<int> p;
int a[10005];
priority_queue<int> que;
int read() {
char c=getchar(); int x=0;
while (c<'0' || c>'9') c=getchar();
while (c>='0' && c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x;
}
int main() {
memset(f,0,sizeof(f));
for (int i=2; i<=10000; i++) {
if (f[i]==0) {
p.push_back(i);
for (int j=i*2; j<=10000; j+=i) f[j]=1;
}
}
int T=read();
while (T--) {
int n=read();
for (int i=1; i<=n; i++) a[i]=read();
long long ans=1;
for (int i=0; i<p.size(); i++) {
for (int j=1; j<=n; j++) {
int t=0;
while (a[j]%p[i]==0) a[j]/=p[i],++t;
if (t>0) que.push(t);
}
while (que.size()>1) {
int a=que.top(); que.pop();
int b=que.top(); que.pop();
--a; --b;
if (a>0) que.push(a);
if (b>0) que.push(b);
}
if (que.empty()) que.push(0);
int cnt=que.top(); que.pop();
while (cnt--) ans=(ans*p[i])%mod;
}
sort(a+1,a+n+1);
for (int i=1; i<=n-1; i++) {
if (a[i]==a[i+1]) {
a[i]=a[i+1]=1;
}
}
for (int i=1; i<=n; i++) ans=(ans*a[i])%mod;
printf("%lld\n", ans);
}
return 0;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 那些年,我收到的‘奇葩’回复 #
23483次浏览 160人参与
# 实习需要主动找活干吗? #
55106次浏览 295人参与
# 百度秋招 #
50565次浏览 384人参与
# OC/开奖 #
191159次浏览 1324人参与
# 你后悔选择现在的专业吗 #
101851次浏览 697人参与
# 职场中那些令人叹为观止的八卦 #
30528次浏览 243人参与
# 小红书开奖了 #
32307次浏览 156人参与
# 实习教会我的事 #
41998次浏览 342人参与
# 蚂蚁求职进展汇总 #
131567次浏览 1204人参与
# 秋招你经历过哪些无语的事 #
22343次浏览 239人参与
# 2022毕业即失业取暖地 #
120328次浏览 709人参与
# 校招薪资来揭秘 #
83907次浏览 524人参与
# 听到哪句话代表面试稳了OR挂了? #
105840次浏览 457人参与
# 秋招吐槽大会 #
92384次浏览 796人参与
# 材料人,你最希望上岸的是? #
11536次浏览 56人参与
# 你今年的保底offer是哪家 #
143776次浏览 620人参与
# 牛客十周岁生日快乐 #
184793次浏览 1825人参与
# 扒一扒那些奇葩实习经历 #
132027次浏览 1125人参与
# AI时代,哪些岗位最容易被淘汰 #
12109次浏览 99人参与
# 你找工作想离家近 or 离家远? #
16935次浏览 245人参与
# 你秋招最后悔的选择 #
18472次浏览 135人参与
# 我的职场社死时刻 #
22851次浏览 171人参与
