关注
这段代码时答案给的参考代码: #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;
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
李橙子:你这如果想找java方向的,那你的项目就不要写python啊,不然会以为你是主要找python的 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些公司开春招了? #
8477次浏览 115人参与
# 运营人的第一份offer应该如何选 #
213680次浏览 1252人参与
# 上班以后,你还有哪些坚持的爱好? #
6199次浏览 165人参与
# 华为工作体验 #
288461次浏览 1368人参与
# 你都在哪些场所面过试? #
17379次浏览 216人参与
# 聊聊你的职场新体验 #
314067次浏览 1849人参与
# 找工作以来,你最看不惯__ #
11514次浏览 276人参与
# AI coding的好用工具分享 #
15621次浏览 350人参与
# 工作压力大怎么缓解 #
136911次浏览 1226人参与
# 实习怎么做才有更好的产出 #
10425次浏览 201人参与
# 实习教会我的事 #
51266次浏览 399人参与
# 你最近因为什么迷茫? #
31222次浏览 456人参与
# 实习生工资多少才算正常? #
11153次浏览 188人参与
# 你给AI提过哪些离谱的需求? #
5146次浏览 155人参与
# 非技术2024笔面经 #
458633次浏览 4930人参与
# 领导做过最不靠谱的事 #
10835次浏览 201人参与
# 你想跟着什么样领导? #
47343次浏览 235人参与
# 职场破防瞬间 #
359131次浏览 2835人参与
# 找工作,行业重要还是岗位重要? #
94167次浏览 1832人参与
# 实习离职怎么跟领导说 #
75640次浏览 420人参与
查看17道真题和解析