QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#67154 | #5099. 朝圣道 | Xun_xiaoyao | 0 | 12ms | 4636kb | C++14 | 1.7kb | 2022-12-10 10:07:46 | 2022-12-10 10:07:46 |
Judging History
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;
}
详细
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%