QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#67154#5099. 朝圣道Xun_xiaoyao0 12ms4636kbC++141.7kb2022-12-10 10:07:462022-12-10 10:07:46

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-12-10 10:07:46]
  • 评测
  • 测评结果:0
  • 用时:12ms
  • 内存:4636kb
  • [2022-12-10 10:07:46]
  • 提交

answer

#include <bits/stdc++.h>
//#include "pilgrimage.h"

long long Mod;
int pri[30],pw[30],gl[30],phi[30],tot,Phi;
int jc[30][1000010];
long long a[30],P[30];
long long qpow(long long a,long long p,int Mod)
{
	long long ret=1;
	for(;p;p>>=1,(a*=a)%=Mod)
		if(p&1) (ret*=a)%=Mod;
	return ret;
}
long long yzcnt(long long n,int p)
{
	long long ret=0;
	while(n) ret+=(n/=p);
	return ret;
}
long long S(long long n,int ind)
{
	if(n==0) return 1;
	return S(n/pri[ind],ind)*1ll*qpow(jc[ind][gl[ind]],n/gl[ind],gl[ind])%gl[ind]*jc[ind][n%gl[ind]]%gl[ind];
}
long long ExLucas(long long n,long long m)
{
	for(int i=1;i<=tot;i++)
	{
		a[i]=S(n,i)*qpow(S(m,i),phi[i]-1,gl[i])%gl[i]*qpow(S(n-m,i),phi[i]-1,gl[i])%gl[i];
//		printf("%lld %lld %lld %lld\n",S(n,i),S(m,i),S(n-m,i),a[i]);
		a[i]=a[i]*qpow(pri[i],yzcnt(n,pri[i])-yzcnt(m,pri[i])-yzcnt(n-m,pri[i]),gl[i])%gl[i];
		P[i]=gl[i];
//		printf("%lld %lld\n",a[i],P[i]);
	}
	long long ret=0;
	for(int i=1;i<=tot;i++)
		(ret+=a[i]*(Mod/P[i])*qpow(Mod/P[i],phi[i]-1,P[i]))%=Mod;
	return ret;
}
void init(int o, int p)
{
	Mod=p;
	for(int i=2;i*i<=p;i++)
	{
		if(p%i==0)
		{
			pri[++tot]=i;
			while(p%i==0)
				pw[tot]++,p/=i;
		}
	}
	if(p!=1) pri[++tot]=p,pw[tot]=1;
	Phi=1;
	for(int i=1;i<=tot;i++)
	{
		jc[i][0]=1;
		gl[i]=qpow(pri[i],pw[i],Mod+1);
		phi[i]=gl[i]-gl[i]/pri[i];
		Phi*=phi[i];
//		printf("(%d %d %d)\n",i,gl[i],phi[i]);
		for(int j=1;j<=gl[i];j++)
		{
			if(j%pri[i]) jc[i][j]=jc[i][j-1]*1ll*j%gl[i];
			else jc[i][j]=jc[i][j-1];
		}	
	}
	return;
}

int ask(long long n)
{
	long long ans=1;
	for(long long i=1;i<=n;i++)
		(ans+=i*ExLucas(2*n,n+i))%=Mod;
	ans*=qpow(qpow(2,2*n-1,Mod),Phi-1,Mod);
	return ans;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Time Limit Exceeded

Test #1:

score: 0
Time Limit Exceeded

input:

1 910276 554767
6
10
7
4
10
12
9
3
3
5
7
10
5
6
1
6
3
9
6
8
12
11
8
2
12
5
9
3
8
2
12
11
2
3
4
9
2
5
5
11
6
4
8
11
3
9
2
2
8
9
2
8
9
6
2
9
2
10
10
7
5
6
4
4
11
12
8
8
2
2
4
3
3
5
6
6
8
11
6
9
9
3
4
1
2
2
6
9
9
2
3
2
12
6
1
7
2
4
12
11
4
7
6
3
9
4
6
5
3
3
12
6
2
1
1
7
2
6
5
9
11
6
3
4
11
1
2
4
5
4
10...

output:

12769665
731247462
1679933959
10388880
731247462

result:


Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Wrong Answer

Test #5:

score: 0
Wrong Answer
time: 12ms
memory: 4636kb

input:

3 1 334547
8234

output:

1542956062

result:

wrong answer 1st numbers differ - expected: '179079', found: '1542956062'

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%

Subtask #6:

score: 0
Time Limit Exceeded

Test #8:

score: 0
Time Limit Exceeded

input:

6 958477 522361
280121915553826833
734266539148641647
72849162479700582
274266741463686096
60278972064195458
828423669427600612
571432949203039978
518511460268700898
486268614705621285
19216283231217074
611458416727512530
175147354285288662
799769622289998997
400123443628688299
145546980862133838
40...

output:

Unauthorized output

result:


Subtask #7:

score: 0
Skipped

Dependency #3:

0%

Subtask #8:

score: 0
Time Limit Exceeded

Test #33:

score: 0
Time Limit Exceeded

input:

8 9963 251
831797004675585320
494759973681332858
701341496127272302
252910460485222469
250965009655458584
366193481309061299
633134388675839346
791999098066205672
196620805863610860
363773642045280947
466508590762410710
407790578717064135
181590911404670570
570642047249889864
70138464625729452
23634...

output:

Unauthorized output

result:


Subtask #9:

score: 0
Skipped

Dependency #2:

0%