General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
192737937 Practice:
Archaeopteryx
653G - 16 C++20 (GCC 11-64) Accepted 171 ms 12028 KB 2023-02-08 16:10:15 2023-02-08 16:10:15
→ Source
#include<bits/stdc++.h>
#define int long long
using namespace std;
int const M=300300,mod=1e9+7;bool vis[M];
int i,j,k,n,v,num,Ans,a[M],A[M],C[M],fac[M],inv[M];
int read(){
int x=0;char ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x;
}
int c(int n,int m){return fac[n]*inv[m]%mod*inv[n-m]%mod;}
int calc(int l,int r){return (l>r)?0:(!l?C[r]:(C[r]-C[l-1]));}
int solve(int x){int s=0;while (x%i==0) x/=i,s++;return s;}
signed main(){ n=read();
for (i=1;i<=n;i++) a[read()]++;
for (i=fac[0]=1;i<M;i++) fac[i]=fac[i-1]*i%mod;
for (inv[i=M-1]=336717977;i>0;i--) inv[i-1]=inv[i]*i%mod;
for (i=C[0]=1;i<n;i++) C[i]=C[i-1]+c(n-1,i);
for (i=2;i<M;i++){
if (vis[i]) continue;num=0;
for (j=i<<1;j<M;j+=i) vis[j]=1;
for (j=i;j<M;j+=i)
for (k=1,v=solve(j);k<=a[j];k++)
A[++num]=v;
for (sort(A+1,A+1+num),j=1;j<=num;j++)
(Ans+=(calc(0,n-num+j-2)-calc(n-num+j,n-1))*A[j])%=mod;
}
return printf("%lld\n",(Ans+mod)%mod),0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details