关注
这段代码时答案给的参考代码: #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;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 怎么给家人解释你的工作? #
12820次浏览 76人参与
# 牛客周边新品开箱 #
10850次浏览 91人参与
# 快手技术岗信息交流阵地 #
4853次浏览 41人参与
# 牛客树洞,我想对你说 #
11231次浏览 102人参与
# 机械人集合!你是什么工程师? #
20365次浏览 91人参与
# 你的mentor是什么样的人? #
17317次浏览 112人参与
# 如何KTV领导 #
73117次浏览 504人参与
# 应届生被毁约被毁意向了怎么办 #
46714次浏览 280人参与
# 求职中的尴尬瞬间 #
4835次浏览 47人参与
# 牛友的志愿填报指南 #
35423次浏览 185人参与
# 硬件人的春招flag #
52102次浏览 435人参与
# 三一集团提前批进度交流 #
38812次浏览 225人参与
# 大疆工作体验 #
19203次浏览 85人参与
# 机械人避雷的岗位/公司 #
28828次浏览 245人参与
# 国企还是互联网,你怎么选? #
170989次浏览 1286人参与
# 得物app工作体验 #
28929次浏览 67人参与
# 大学最后一个寒假,我想…… #
54265次浏览 599人参与
# 帮我看看,领导说这话什么意思? #
22871次浏览 102人参与
# 校招泡的最久的公司是哪家? #
14015次浏览 85人参与
# 26届秋招公司红黑榜 #
29433次浏览 120人参与
# 今年形式下双非本找得到工作吗 #
238387次浏览 1434人参与
字节跳动公司福利 1297人发布


查看1道真题和解析