关注
这段代码时答案给的参考代码: #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;
}
查看原帖
点赞 评论
相关推荐
11-21 23:09
The University of Sydney 测试开发 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# OC/开奖 #
202572次浏览 1350人参与
# 材料转码还有必要吗? #
32223次浏览 152人参与
# 腾讯音乐秋招 #
432234次浏览 4786人参与
# 你面试时吹过最大的牛 #
1620次浏览 14人参与
# 科大讯飞工作体验 #
29241次浏览 71人参与
# 记录实习开销 #
164828次浏览 631人参与
# 百度秋招 #
53150次浏览 390人参与
# 实习学到最有价值的工作习惯 #
41583次浏览 364人参与
# 设计人的面试记录 #
167208次浏览 1545人参与
# 华为工作体验 #
242977次浏览 1297人参与
# 你知道哪些职场黑话? #
64948次浏览 453人参与
# 蚂蚁求职进展汇总 #
133570次浏览 1213人参与
# 2022毕业即失业取暖地 #
121699次浏览 710人参与
# 应届生应该先就业还是先择业 #
148307次浏览 746人参与
# 正在春招的你,也参与了去年秋招吗? #
335399次浏览 2563人参与
# 你找工作的时候用AI吗? #
160294次浏览 848人参与
# 为了秋招你都做了哪些准备? #
26011次浏览 497人参与
# CVTE求职进展汇总 #
26680次浏览 327人参与
# 华为池子有多大 #
124246次浏览 807人参与
# 实习生应该准时下班吗 #
317559次浏览 1716人参与
# 秋招你经历过哪些无语的事 #
28390次浏览 308人参与
# 上班后和你想的一样吗? #
91304次浏览 694人参与
查看13道真题和解析