General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
233876784 Practice:
chenziyi1
653G - 16 C++14 (GCC 6-32) Accepted 452 ms 16464 KB 2023-11-23 10:38:39 2023-11-23 10:38:39
→ Source
#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int NN=1e9+7;
int p[300100],ni[300300];
int c[300300],f[300300];
int mi(int x,int y){
	int sum=1;
	for (;y;y>>=1,x=x*x%NN)
	if (y&1)sum=sum*x%NN;
	return sum;
}
int get(int x,int y){
	return p[x]*ni[y]%NN*ni[x-y]%NN;
}
void init(int n){
	p[0]=1;for (int i=1;i<=n;i++)p[i]=p[i-1]*i%NN;
	ni[n]=mi(p[n],NN-2);for (int i=n;i;i--)ni[i-1]=ni[i]*i%NN;
	for (int i=0;i<n;i++)c[i]=(c[max(i-1,0ll)]+get(n-1,i))%NN;
	for (int i=1;i<=n;i++)f[i]=(f[i-1]+c[n-1]-c[i-1]-c[i-2])%NN;
}
int n,w[300300],b[300300],a[300300];
int N=300010,ans;
signed main(){
	cin>>n;
	init(n);
	for (int i=1,x;i<=n;i++)
	cin>>x,w[x]++;
	for (int i=2;i<N;i++)
	if (!b[i]){
		for (int j=i;j<N;j+=i)b[j]=1;
		int j,k;
		for (j=k=1;k*i<N;j++){
			a[j]=0,k*=i;
			for (int l=k;l<N;l+=k)a[j]+=w[l];
			if (!a[j])break;
		}
		for (a[j]=0;--j;)ans=(ans+j*1ll*(f[a[j]]-f[a[j+1]]))%NN;
	}
	cout<<(ans+NN)%NN<<endl;
	
} 
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details