关注
这段代码时答案给的参考代码: #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;
}
查看原帖
点赞 评论
相关推荐
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
06-30 15:54
湖北文理学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
56453次浏览 419人参与
# 运营面经 #
115798次浏览 1251人参与
# 你认为小厂实习有用吗? #
21552次浏览 254人参与
# 说说你知道的学历厂 #
40500次浏览 245人参与
# 应届生,你找到工作了吗 #
21743次浏览 154人参与
# 你的领导最像哪种动物,为什么? #
14570次浏览 107人参与
# 三一重工求职进展汇总 #
13501次浏览 62人参与
# 材料人,你们签了哪个公司 #
7551次浏览 18人参与
# 哪一瞬间觉得自己长大了 #
10451次浏览 233人参与
# 计算机有哪些岗位值得去? #
17395次浏览 161人参与
# 面试尴尬现场 #
33365次浏览 224人参与
# 你找工作的时候用AI吗? #
19367次浏览 236人参与
# 下班后的时间你怎么安排 #
10614次浏览 142人参与
# 烟草笔面经互助 #
17885次浏览 184人参与
# 硬件人秋招的第一个offer #
80241次浏览 1154人参与
# 社会教会你的第一课 #
37640次浏览 470人参与
# 秋招最大的收获是什么? #
36153次浏览 309人参与
# 电网笔面经互助 #
36958次浏览 359人参与
# 中核求职进展汇总 #
20801次浏览 153人参与
# lastday知无不言 #
58448次浏览 475人参与