QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#618727 | #5402. 术树数 | Xun_xiaoyao | 3 | 328ms | 31440kb | C++20 | 2.9kb | 2024-10-07 09:03:48 | 2024-10-07 09:03:48 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int Qread()
{
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;
}
void exgcd(int a,int b,int &x,int &y)
{
if(b==0) return x=1,y=0,void();
else exgcd(b,a%b,y,x),y-=a/b*x,void();
}
int Q,k,m;
struct Vector{
int num[25];
Vector operator+(const Vector A) const
{
Vector ret;
for(int i=0;i<m;i++)
{
ret.num[i]=num[i]+A.num[i];
if(ret.num[i]>=k) ret.num[i]-=k;
}
return ret;
}
Vector operator-(const Vector A)const
{
Vector ret;
for(int i=0;i<m;i++)
{
ret.num[i]=num[i]-A.num[i];
if(ret.num[i]<0) ret.num[i]+=k;
}
return ret;
}
Vector operator*(const int A)const
{
Vector ret;int a=A%k;while(a<0) a+=k;
for(int i=0;i<m;i++)
ret.num[i]=1ll*num[i]*a%k;
return ret;
}
void input(int x)
{
for(int i=0;i<m;i++)
num[i]=x%k,x/=k;
}
int output()
{
int ret=0;
for(int i=m-1;~i;i--)
ret=ret*k+num[i];
return ret;
}
void show()
{
for(int i=0;i<m;i++)
printf("%d ",num[i]);
printf("\n");
}
};
Vector bas[30];bool hv[30];
queue<Vector> G;
void ins(Vector X)
{
int x,y;
// X.show();
for(int i=m-1;~i;i--) if(X.num[i])
{
if(hv[i])
{
if(__gcd(X.num[i],bas[i].num[i])<bas[i].num[i])
{
exgcd(X.num[i],bas[i].num[i],x,y);
G.push(X);G.push(bas[i]);
bas[i]=X*x+bas[i]*y;
}
X=X-bas[i]*(X.num[i]/bas[i].num[i]);
}
else
{
exgcd(X.num[i],k,x,y);
hv[i]=true,bas[i]=X*x;
break;
}
}
}
void chk()
{
while(!G.empty())
ins(G.front()),G.pop();
}
Vector calc(Vector X)
{
X.show();
for(int i=m-1;~i;i--) if(X.num[i]&&hv[i])
X=X-bas[i]*(X.num[i]/bas[i].num[i]);
return X;
}
int op,x,y,v,n,lca;
int dep[200010],fa[20][200010];
Vector tmp,val[200010];
inline int get_lca(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
for(int i=19;~i;i--) if(dep[fa[i][u]]>=dep[v])
u=fa[i][u];
for(int i=19;~i;i--) if(fa[i][u]!=fa[i][v])
u=fa[i][u],v=fa[i][v];
return u!=v?u:fa[0][u];
}
int main()
{
Q=Qread(),k=Qread(),m=Qread();
if(k&1)
{
for(int i=1;i<=Q;i++)
{
op=Qread();
if(op==1) x=Qread(),v=Qread();
else if(op==2) x=Qread(),y=Qread(),v=Qread();
else x=Qread(),y=Qread(),printf("0\n");
}
return 0;
}
n=1;
for(int i=1;i<=Q;i++)
{
op=Qread();
if(op==1)
{
x=Qread(),v=Qread();
fa[0][++n]=x;
for(int i=1;i<20;i++)
fa[i][n]=fa[i-1][fa[i-1][n]];
tmp.input(v);
val[n]=val[x]+tmp,dep[n]=dep[x]+1;
ins(tmp*2);chk();
}
else if(op==2)
{
x=Qread(),y=Qread(),v=Qread();
lca=get_lca(x,y);
tmp.input(v);
tmp=tmp+val[x]+val[y]-val[lca]-val[lca];
ins(tmp);chk();
}
else
{
x=Qread(),y=Qread();
lca=get_lca(x,y);
tmp=val[x]+val[y]-val[lca]-val[lca];
tmp=calc(tmp);
printf("%d\n",tmp.output());
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 2
Accepted
time: 0ms
memory: 3612kb
input:
30 7 3 1 1 301 1 1 236 1 2 278 3 2 4 3 2 4 2 1 4 265 1 1 242 1 4 278 1 6 337 3 2 3 2 5 7 304 2 5 6 34 1 4 178 3 6 7 3 5 7 3 1 4 1 1 178 3 3 4 3 1 6 3 3 4 2 6 7 131 1 1 213 3 1 3 2 3 10 11 3 4 6 2 5 9 169 1 6 9 2 5 10 29 1 9 111 3 9 11
output:
0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 12 lines
Test #2:
score: 2
Accepted
time: 0ms
memory: 3732kb
input:
30 9 3 1 1 694 1 2 251 1 2 623 2 2 4 109 3 3 4 3 1 2 2 2 4 611 1 4 595 2 2 5 477 2 2 5 363 3 1 3 2 1 5 121 1 2 225 2 1 5 214 2 3 6 706 3 3 4 2 2 3 122 2 2 3 621 3 2 3 3 2 4 2 1 5 630 1 5 598 3 4 5 3 1 3 1 2 665 2 1 2 331 2 1 6 449 1 2 387 3 3 6 3 4 6
output:
0 0 0 0 0 0 0 0 0 0
result:
ok 10 lines
Test #3:
score: 0
Wrong Answer
time: 3ms
memory: 20120kb
input:
30 4 5 1 1 854 1 1 467 1 2 708 2 2 4 529 1 4 115 1 4 444 2 3 4 108 2 2 5 724 2 1 3 375 1 5 827 2 5 6 974 1 3 73 3 2 3 2 2 3 140 3 5 6 2 6 8 787 3 1 5 1 5 971 3 4 6 2 4 5 816 3 7 8 3 2 4 1 6 855 2 5 10 39 2 6 9 280 2 6 10 662 3 7 10 1 6 412 3 4 7 1 6 276
output:
1 3 0 2 2 0 1 3 0 1 1 256 1 2 0 1 1 256 0 1 3 0 1 256 0 0 2 3 3 0 0 3 2 1 0 0 3 2 0 2 3 0 2 0 2 3 3 0
result:
wrong answer 1st lines differ - expected: '0', found: '1 3 0 2 2 '
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #21:
score: 11
Accepted
time: 8ms
memory: 3768kb
input:
198517 3 16 1 1 40710744 1 2 21885097 1 1 23592366 1 4 7387074 1 5 16074177 1 1 41027400 1 4 18082971 1 2 12822448 1 1 2286557 1 1 27896295 1 11 14532760 1 8 2357296 1 11 9190559 1 6 40503152 3 4 11 3 1 7 3 3 7 3 8 14 3 12 15 3 2 3 1 10 34606866 1 13 42718465 1 16 30353561 3 5 11 3 2 6 3 16 18 1 3 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 99662 lines
Test #22:
score: 0
Wrong Answer
time: 217ms
memory: 31440kb
input:
198073 8 8 1 1 4007183 1 1 411647 1 1 3301064 1 1 2747675 1 3 11141272 1 3 4308435 1 4 15582931 1 5 11340890 1 2 9172283 1 9 542280 1 10 12209796 1 3 2829956 3 1 3 1 3 724504 3 2 14 3 3 14 3 9 12 3 7 10 1 1 3594204 1 14 13600647 1 15 4589767 3 10 14 1 4 10564184 1 13 1781174 1 19 6067505 1 9 6735060...
output:
7 7 7 3 4 4 1 0 262729 0 5 5 6 6 4 0 1 2097224 6 1 6 5 0 6 4 0 520 5 4 7 3 7 6 6 6 4673 6 3 0 7 0 0 0 7 2097672 3 0 7 2 1 7 6 3 2134081 1 1 6 7 7 0 4 1 2101769 6 2 7 4 1 7 6 1 2134080 0 5 7 7 5 2 0 7 2101832 6 2 2 5 0 1 2 5 2130432 0 5 7 7 6 2 0 6 584 6 3 7 6 2 7 6 1 2129992 4 1 2 7 0 5 ...
result:
wrong answer 1st lines differ - expected: '262729', found: '7 7 7 3 4 4 1 0 '
Subtask #4:
score: 0
Wrong Answer
Test #26:
score: 0
Wrong Answer
time: 129ms
memory: 28284kb
input:
198891 26426880 1 1 1 0 2 1 2 0 3 1 2 1 1 0 3 2 3 3 1 2 1 2 0 1 2 0 1 3 0 1 6 0 2 1 6 0 2 3 6 0 3 2 3 1 2 13213440 1 2 13213440 1 4 13213440 3 4 10 1 1 13213440 2 3 4 0 2 3 8 13213440 1 1 0 1 12 0 1 13 0 1 3 0 3 2 11 3 2 12 2 11 14 13213440 1 6 0 2 12 14 0 2 1 2 0 1 10 0 1 12 0 2 3 13 0 3 12 14 3 1 ...
output:
0 0 0 0 0 0 0 0 13213440 13213440 13213440 13213440 0 0 0 0 0 0 13213440 13213440 0 0 0 0 13213440 13213440 0 0 13213440 13213440 0 0 13213440 13213440 0 0 13213440 13213440 13213440 13213440 13213440 13213440 13213440 13213440 13213440 13213440 0 0 13213440 13213440 1321344...
result:
wrong answer 5th lines differ - expected: '13213440', found: '0 '
Subtask #5:
score: 0
Wrong Answer
Test #30:
score: 0
Wrong Answer
time: 328ms
memory: 28660kb
input:
199458 2 25 1 1 31252443 2 1 2 22827339 1 2 13517756 1 2 5635412 1 3 33397078 1 3 33542998 2 3 5 1484991 3 5 6 2 1 3 7938846 2 1 2 3665458 1 3 29150948 3 4 5 1 3 733545 1 7 4698781 1 7 21699192 1 6 10854390 3 3 8 3 4 8 1 2 6889338 2 1 12 27646676 2 6 8 24407215 1 11 20847453 3 4 13 1 6 16891344 3 4 ...
output:
0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 150016 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 891079 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 733545 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1048849 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 7306736 1 0 0 0 ...
result:
wrong answer 1st lines differ - expected: '150016', found: '0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 '
Subtask #6:
score: 3
Accepted
Test #33:
score: 3
Accepted
time: 3ms
memory: 3864kb
input:
49958 1023 2 1 1 122428 1 1 917186 2 2 3 53148 1 3 876461 2 1 3 968146 2 2 4 569341 2 3 4 199413 2 1 4 238371 1 3 127427 1 2 887225 2 1 4 776059 2 4 6 155479 2 1 6 795533 1 5 159578 3 5 6 2 2 5 758778 2 5 6 601115 3 4 7 1 4 202224 2 5 6 902346 3 1 6 3 5 7 3 3 5 1 2 791251 1 5 502214 2 6 7 929048 1 6...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 16607 lines
Test #34:
score: 3
Accepted
time: 13ms
memory: 3728kb
input:
198392 7 9 1 1 23598910 3 1 2 1 1 25616681 2 1 2 22101090 2 2 3 25455751 3 1 2 3 1 2 1 3 25668120 3 1 3 1 3 23878180 1 4 10885281 1 1 5873751 2 2 7 31608236 3 2 3 3 3 5 2 2 6 37313936 2 1 6 36853293 2 4 7 6773989 2 1 7 19143946 3 2 7 3 3 7 3 1 2 1 1 31756932 3 3 6 2 5 8 39585364 1 2 27162269 3 4 5 2...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 65758 lines
Subtask #7:
score: 0
Skipped
Dependency #1:
0%