QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#432739 | #7838. 往日之影 | xlwang | 40 | 5ms | 3756kb | C++14 | 3.1kb | 2024-06-07 16:27:56 | 2024-06-07 16:27:56 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define fr(i,j,k) for(register int i=j;i<=k;++i)
#define rf(i,j,k) for(register int i=j;i>=k;--i)
#define foredge(i,j) for(register int i=head[j];i;i=e[i].nxt)
#define pb push_back
#define Times printf("Time:%.3lf\n",clock()/CLOCKS_PER_SEC)
#define pii pair<int,int>
#define mk make_pair
using namespace std;
inline int read(){
int x=0;
bool f=0;
char c=getchar();
while(!isdigit(c)) f|=(c=='-'),c=getchar();
while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
return f?-x:x;
}
inline void write(int x){
if(x<0){putchar('-');x=-x;}
if(x>9)write(x/10);
putchar(x%10+'0');
}
inline void writeln(int x){write(x); puts("");}
inline void writepl(int x){write(x); putchar(' ');}
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
inline int randfind(int l,int r){return rnd()%(r-l+1)+l;}
//inline void init(){
// int t=read();
// while(t--) work();
//}
int mod;
struct node{int x,y;};
inline void add(int &x,int y){x+=y;if(x>=mod) x-=mod;}
node operator + (node A,node B){
node C;C.x=(A.x+B.x)%mod;C.y=(A.y+B.y)%mod;
return C;
}
node operator - (node A,node B){
node C;C.x=(A.x-B.x+mod)%mod;C.y=(A.y-B.y+mod)%mod;
return C;
}
node operator * (node A,node B){
node C;C.x=1ll*A.x*B.x%mod;add(C.x,mod-1ll*A.y*B.y%mod);
C.y=1ll*A.x*B.y%mod;add(C.y,1ll*A.y*B.x%mod);return C;
}
inline int Pow(int x,int y=mod-2){
int sum=1;
while(y){
if(y&1) sum=1ll*sum*x%mod;
y=y/2;x=1ll*x*x%mod;
}
return sum;
}
inline node ksm(node x,ll y){
node sum=(node){1,0};
while(y){
if(y&1) sum=sum*x;
y=y/2;x=x*x;
}
return sum;
}
int a[5];
node w[5];
int s[5],n;
int ans;
inline void check(int tp,node now){
// cout<<"**"<<endl;
// cout<<tp<<' '<<now.x<<' '<<now.y<<endl;
fr(i,0,3){
now=now*w[(4-tp)%4*a[i]*i%4];
s[tp]+=a[i];
}
fr(i,0,3){
now=now*ksm(w[2*i%4]+w[0],1ll*s[i]*(s[i]-1)/2);
fr(j,i+1,3) now=now*ksm(w[(i+j)%4]+w[0],1ll*s[i]*s[j]);
}
add(ans,now.x);
fr(i,0,3) s[tp]-=a[i];
}
inline void dfs(int x,node now){
if(x==5){
if(s[1]+s[3]>n) return;
check(2,now);
if(s[1]+s[3]==n) return;
check(0,now);
return;
}
dfs(x+2,now);
fr(i,0,3){
if(!a[i]) continue;
if(a[i]){
--a[i];++s[x];
dfs(x+2,now*(node){a[i]+1,0}*w[(4-x)*i%4]);
++a[i];--s[x];
}
}
}
inline void work(){
n=read();fr(i,0,3) a[i]=read();
ans=0;dfs(1,(node){1,0});
ans=1ll*ans*Pow(1ll*Pow(4,n)*Pow(2,1ll*n*(n-1)/2%mod)%mod)%mod;
writeln(ans);
}
inline void init(){
int t=read();mod=read();
w[0]=(node){1,0};
fr(i,1,3) w[i]=w[i-1]*(node){0,1};
// fr(i,0,3) cout<<i<<' '<<w[i].x<<' '<<w[i].y<<endl;
while(t--) work();
}
signed main(){
// freopen("input.in","r",stdin);
// freopen("output.out","w",stdout);
init();
// printf("\nTIME:%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 1ms
memory: 3664kb
input:
1 998244353 3 1 1 0 1
output:
0
result:
ok single line: '0'
Test #2:
score: 10
Accepted
time: 1ms
memory: 3528kb
input:
1 998244353 7 0 2 1 4
output:
998069185
result:
ok single line: '998069185'
Test #3:
score: 10
Accepted
time: 0ms
memory: 3604kb
input:
1 998244353 4 0 1 0 3
output:
0
result:
ok single line: '0'
Test #4:
score: 10
Accepted
time: 0ms
memory: 3692kb
input:
1 998244353 2 1 0 1 0
output:
0
result:
ok single line: '0'
Test #5:
score: 10
Accepted
time: 0ms
memory: 3648kb
input:
1 998244353 6 2 1 0 3
output:
997696001
result:
ok single line: '997696001'
Test #6:
score: 10
Accepted
time: 0ms
memory: 3644kb
input:
1 998244353 2 1 0 1 0
output:
0
result:
ok single line: '0'
Subtask #2:
score: 20
Accepted
Dependency #1:
100%
Accepted
Test #7:
score: 20
Accepted
time: 1ms
memory: 3524kb
input:
1 998244353 40 11 9 9 11
output:
855684614
result:
ok single line: '855684614'
Test #8:
score: 20
Accepted
time: 1ms
memory: 3528kb
input:
1 998244353 39 12 8 7 12
output:
629648158
result:
ok single line: '629648158'
Test #9:
score: 20
Accepted
time: 0ms
memory: 3704kb
input:
1 998244353 38 13 8 9 8
output:
944107686
result:
ok single line: '944107686'
Test #10:
score: 20
Accepted
time: 0ms
memory: 3576kb
input:
1 998244353 37 16 7 7 7
output:
393700837
result:
ok single line: '393700837'
Test #11:
score: 20
Accepted
time: 1ms
memory: 3652kb
input:
4 998244353 10 0 3 2 5 9 2 1 1 5 10 1 2 3 4 9 4 0 3 2
output:
124779131 998235309 124779131 998236023
result:
ok 4 lines
Test #12:
score: 20
Accepted
time: 1ms
memory: 3600kb
input:
4 998244353 10 2 1 4 3 9 1 2 4 2 10 3 2 5 0 9 3 2 2 2
output:
124779131 998239593 124778655 998236261
result:
ok 4 lines
Test #13:
score: 20
Accepted
time: 1ms
memory: 3692kb
input:
4 998244353 10 1 4 1 4 9 2 0 5 2 10 3 5 1 1 9 6 1 1 1
output:
623900891 998239355 374338940 998231025
result:
ok 4 lines
Test #14:
score: 20
Accepted
time: 0ms
memory: 3648kb
input:
8 998244353 4 2 1 0 1 4 0 2 0 2 5 0 1 1 3 4 0 1 0 3 5 1 1 0 3 5 0 3 1 1 4 2 2 0 0 5 1 1 2 1
output:
0 0 995319809 0 997269505 995319809 982646785 996294657
result:
ok 8 lines
Test #15:
score: 20
Accepted
time: 1ms
memory: 3540kb
input:
8 998244353 4 2 1 0 1 4 3 0 1 0 4 0 2 2 0 5 2 0 1 2 5 1 2 0 2 5 0 1 1 3 5 0 1 1 3 4 1 1 1 1
output:
0 0 967049217 997269505 0 995319809 995319809 0
result:
ok 8 lines
Test #16:
score: 20
Accepted
time: 1ms
memory: 3600kb
input:
3 998244353 30 1 10 7 12 8 0 3 0 5 2 0 1 0 1
output:
54137262 998208177 0
result:
ok 3 lines
Subtask #3:
score: 10
Accepted
Dependency #2:
100%
Accepted
Test #17:
score: 10
Accepted
time: 1ms
memory: 3756kb
input:
1 998244353 99 12 22 33 32 15 998244353 7 1 2 2 2 6 1 2 1 2 6 1 1 3 1 7 0 3 1 3 7 1 1 2 3 7 3 1 0 3 6 1 2 1 2 7 1 2 2 2 7 3 3 0 1 6 1 1 3 1 7 5 1 0 1 6 3 0 1 2 6 2 0 0 4 7 2 0 1 4 6 4 1 0 1
output:
940435798
result:
ok single line: '940435798'
Test #18:
score: 10
Accepted
time: 1ms
memory: 3540kb
input:
1 998244353 98 27 29 23 19 15 998244353 7 2 2 1 2 6 0 1 2 3 6 0 2 2 2 6 6 0 0 0 7 4 1 1 1 7 2 1 1 3 7 2 1 1 3 7 2 3 1 1 7 3 3 0 1 6 3 1 1 1 6 3 1 1 1 7 2 1 1 3 6 1 1 3 1 6 1 1 3 1 6 2 0 4 0
output:
147819391
result:
ok single line: '147819391'
Test #19:
score: 10
Accepted
time: 0ms
memory: 3696kb
input:
3 998244353 70 15 17 13 25 20 8 3 4 5 10 3 2 5 0 15 998244353 7 5 1 0 1 6 0 1 4 1 7 1 3 2 1 6 1 0 1 4 7 2 2 1 2 7 2 1 1 3 7 2 3 1 1 6 6 0 0 0 6 3 2 1 0 7 2 3 1 1 7 1 1 2 3 6 2 1 2 1 6 1 2 1 2 6 1 1 1 3 7 2 2 3 0
output:
300715311 500913543 124778655
result:
ok 3 lines
Test #20:
score: 10
Accepted
time: 1ms
memory: 3696kb
input:
3 998244353 70 21 23 11 15 20 5 4 3 8 10 5 1 1 3 15 998244353 6 1 0 3 2 7 3 1 0 3 6 2 2 0 2 7 1 3 0 3 7 2 2 3 0 6 3 0 3 0 6 1 0 3 2 7 1 1 2 3 6 1 1 1 3 7 1 2 0 4 7 2 1 1 3 6 4 0 0 2 6 2 2 2 0 6 2 2 0 2 6 0 1 2 3
output:
367385542 500913543 374339416
result:
ok 3 lines
Test #21:
score: 10
Accepted
time: 1ms
memory: 3600kb
input:
10 998244353 9 2 4 1 2 10 3 4 1 2 10 1 2 3 4 10 2 3 4 1 10 3 1 3 3 9 0 4 3 2 9 2 3 1 3 10 4 2 2 2 9 4 1 1 3 9 2 3 1 3 15 998244353 7 1 3 0 3 6 3 2 1 0 6 0 2 0 4 6 0 4 2 0 7 1 3 0 3 6 1 1 3 1 6 1 4 1 0 7 1 1 2 3 6 2 3 0 1 7 3 1 2 1 6 4 0 2 0 6 2 2 2 0 6 2 1 2 1 7 3 2 2 0 6 0 0 4 2
output:
998236023 124778179 124779131 124778655 374340011 998239355 998236261 374339535 998233643 998236261
result:
ok 10 lines
Test #22:
score: 10
Accepted
time: 1ms
memory: 3624kb
input:
15 998244353 7 3 2 2 0 7 2 2 3 0 6 1 3 1 1 7 1 1 2 3 6 1 3 1 1 7 3 3 0 1 6 2 1 2 1 6 1 2 1 2 6 1 1 1 3 6 4 1 0 1 7 3 2 2 0 6 1 3 1 1 6 0 2 2 2 7 1 3 0 3 7 2 2 1 2
output:
998191041 998191041 998061569 998069185 998061569 998160577 997939713 997939713 997574145 997939713 998191041 998061569 997574145 998145345 998145345
result:
ok 15 lines
Subtask #4:
score: 0
Wrong Answer
Test #23:
score: 10
Accepted
time: 5ms
memory: 3692kb
input:
999 999999001 2 2 0 0 0 3 3 0 0 0 4 4 0 0 0 5 5 0 0 0 6 6 0 0 0 7 7 0 0 0 8 8 0 0 0 9 9 0 0 0 10 10 0 0 0 11 11 0 0 0 12 12 0 0 0 13 13 0 0 0 14 14 0 0 0 15 15 0 0 0 16 16 0 0 0 17 17 0 0 0 18 18 0 0 0 19 19 0 0 0 20 20 0 0 0 21 21 0 0 0 22 22 0 0 0 23 23 0 0 0 24 24 0 0 0 25 25 0 0 0 26 26 0 0 0 27...
output:
499999501 874999126 359374641 919920956 691222454 586081873 33512082 496961574 790501684 206445579 708073277 492142887 486007979 21786019 802052117 198521403 854660059 658779344 904643630 538486221 357736277 949763680 94144464 342842045 695164947 276856011 552666277 813428208 572457238 910726512 177...
result:
ok 999 lines
Test #24:
score: 0
Wrong Answer
time: 1ms
memory: 3696kb
input:
1 1000000933 154579 154579 0 0 0
output:
272194769
result:
wrong answer 1st lines differ - expected: '657848365', found: '272194769'
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
0%