QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#82096 | #5402. 术树数 | zhouhuanyi | 22 | 1594ms | 13788kb | C++23 | 2.3kb | 2023-02-27 08:18:32 | 2023-02-27 08:18:35 |
Judging History
answer
#include<iostream>
#include<cstdio>
#define N 200000
#define M 26
using namespace std;
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int gcd(int x,int y)
{
if (!y) return x;
return gcd(y,x%y);
}
int length,q,k,m,x,v;
long long sx,sy;
struct reads
{
int d[M+1];
};
reads tmp,dp[N+1],c[M+1];
reads operator + (reads a,reads b)
{
for (int i=0;i<=m-1;++i) a.d[i]=(a.d[i]+b.d[i])%k;
return a;
}
reads operator * (reads a,int b)
{
for (int i=0;i<=m-1;++i) a.d[i]=1ll*a.d[i]*b%k;
return a;
}
reads F(int x)
{
for (int i=0;i<=m-1;++i) tmp.d[i]=x%k,x/=k;
return tmp;
}
int G(reads x)
{
int res=0;
for (int i=m-1;i>=0;--i) res=res*k+x.d[i];
return res;
}
void exgcd(int x,int y)
{
if (!y)
{
sx=1,sy=0;
return;
}
exgcd(y,x%y);
long long tx=sx;
sx=sy,sy=tx-(x/y)*sy;
return;
}
reads solve(int num,reads x)
{
int ds=gcd(x.d[num],k);
exgcd(x.d[num]/ds,k/ds),sx=(sx%k+k)%k;
return x*sx;
}
reads get_gcd(int num,reads a,reads b,reads &c)
{
a=solve(num,a),b=solve(num,b),exgcd(a.d[num],b.d[num]),sx=(sx%k+k)%k,sy=(sy%k+k)%k;
return a*sx+b*sy;
}
void Insert(reads x)
{
int ds;
reads y;
for (int i=m-1;i>=0;--i)
if (x.d[i])
{
if (!c[i].d[i]) c[i]=x,ds=k/gcd(x.d[i],k),x=x*k;
else c[i]=get_gcd(i,c[i],x,y),ds=(k-y.d[i])/c[i].d[i],y=y+c[i]*ds;
}
return;
}
reads query(reads x)
{
int ds,dst;
reads y;
for (int i=m-1;i>=0;--i)
if (x.d[i]&&c[i].d[i])
y=solve(i,c[i]),ds=x.d[i]%y.d[i],dst=((ds-x.d[i])/y.d[i]+k)%k,x=x+y*dst;
return x;
}
int main()
{
int op,x,y,v;
q=read(),k=read(),m=read();
if (k&1)
{
while (q--)
{
op=read();
if (op==1) x=read(),v=read();
else if (op==2) x=read(),y=read(),v=read();
else x=read(),y=read(),puts("0");
}
return 0;
}
length=1;
while (q--)
{
op=read();
if (op==1) x=read(),v=read(),dp[++length]=dp[x]+F(v),Insert(F(v)+F(v));
else if (op==2) x=read(),y=read(),v=read(),Insert(dp[x]+dp[y]+F(v));
else x=read(),y=read(),printf("%d\n",G(query(dp[x]+dp[y])));
}
return 0;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 2
Accepted
time: 2ms
memory: 3324kb
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: 0
Accepted
time: 2ms
memory: 3396kb
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: -2
Wrong Answer
time: 2ms
memory: 3444kb
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:
8 288 896 484 960 288 576 480
result:
wrong answer 1st lines differ - expected: '0', found: '8'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Wrong Answer
Test #21:
score: 11
Accepted
time: 12ms
memory: 3428kb
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: -11
Wrong Answer
time: 522ms
memory: 13788kb
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:
5582457 6374504 9576984 9576001 15876648 15332545 11023113 3267648 6444664 10535680 9570136 2279528 15106584 10539016 3832640 6755104 13602560 14408736 8410624 525328 2015937 367337 9653521 165609 11813033 11175816 2802273 10754033 5263809 5540288 1242944 10767681 2005336 16464304 5215208 9554496 11...
result:
wrong answer 1st lines differ - expected: '262729', found: '5582457'
Subtask #4:
score: 19
Accepted
Test #26:
score: 19
Accepted
time: 73ms
memory: 10488kb
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 13213440 13213440 0 0 0 13213440 0 0 13213440 0 13213440 0 13213440 0 13213440 13213440 13213440 13213440 13213440 0 13213440 13213440 0 13213440 13213440 0 0 0 13213440 0 13213440 0 13213440 0 0 0 13213440 13213440 0 13213440 13213440 13213440 13213440 0 13213440 13213440 13213440 13213440 ...
result:
ok 66344 lines
Test #27:
score: 0
Accepted
time: 43ms
memory: 10356kb
input:
199011 22494024 1 1 1 11247012 1 1 11247012 2 1 2 11247012 3 1 3 1 3 11247012 2 1 4 0 1 1 11247012 1 2 11247012 2 4 5 11247012 3 1 2 1 5 0 3 2 5 2 5 6 11247012 2 2 3 0 1 1 11247012 3 4 8 2 1 5 11247012 3 5 7 1 6 11247012 1 4 0 3 1 7 2 1 9 11247012 1 7 11247012 2 3 4 11247012 3 4 5 2 1 9 11247012 3 5...
output:
11247012 11247012 0 11247012 0 11247012 11247012 11247012 0 11247012 0 0 0 11247012 11247012 11247012 11247012 11247012 11247012 11247012 0 11247012 11247012 11247012 11247012 11247012 11247012 0 0 0 11247012 11247012 11247012 0 0 0 0 11247012 0 11247012 11247012 0 11247012 0 0 11247012 0 11247012 1...
result:
ok 66431 lines
Test #28:
score: 0
Accepted
time: 69ms
memory: 10428kb
input:
198242 23269680 1 1 1 11634840 2 1 2 11634840 3 1 2 2 1 2 11634840 1 1 11634840 1 1 0 1 2 0 1 1 0 2 2 6 11634840 2 2 6 11634840 3 4 6 3 5 6 1 6 11634840 2 3 6 11634840 3 2 7 2 2 5 0 2 2 3 0 2 2 3 0 2 3 7 0 2 2 3 0 3 1 3 3 2 5 2 1 3 11634840 3 3 6 3 2 5 3 5 7 2 1 6 0 1 4 0 1 4 11634840 2 7 8 11634840...
output:
11634840 0 11634840 0 11634840 0 11634840 0 0 0 0 11634840 11634840 0 11634840 11634840 0 0 11634840 0 11634840 11634840 11634840 11634840 11634840 11634840 11634840 11634840 11634840 0 11634840 11634840 11634840 11634840 0 11634840 11634840 11634840 11634840 0 0 11634840 0 11634840 11634840 1163484...
result:
ok 66135 lines
Test #29:
score: 0
Accepted
time: 54ms
memory: 10352kb
input:
198177 22462440 1 1 1 15723708 3 1 2 1 2 0 3 2 3 2 2 3 17969952 2 1 2 20216196 1 1 15723708 3 2 3 2 1 3 11231220 2 1 2 11231220 1 1 11231220 2 1 3 2246244 2 1 2 20216196 3 3 4 1 4 8984976 2 5 6 4492488 2 3 6 4492488 2 2 5 4492488 1 4 17969952 1 6 20216196 3 3 7 1 1 15723708 1 4 0 3 3 9 3 1 5 1 7 449...
output:
2246244 0 0 0 0 0 2246244 2246244 2246244 0 0 2246244 0 0 0 0 2246244 2246244 0 2246244 0 0 0 0 0 2246244 2246244 0 0 2246244 2246244 0 0 0 2246244 2246244 2246244 0 2246244 0 2246244 0 0 0 0 2246244 0 0 2246244 2246244 0 0 0 0 2246244 0 2246244 0 0 0 2246244 0 2246244 2246244 2246244 0 2246244 0 22...
result:
ok 66146 lines
Subtask #5:
score: 0
Wrong Answer
Test #30:
score: 0
Wrong Answer
time: 1594ms
memory: 10732kb
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:
150016 9246295 733545 9473921 25447449 7012 17502286 26517565 32632530 15820374 15525092 1819763 27302017 1245275 17024335 30972185 24184978 16130235 14958813 10377217 13985952 1418660 9244197 9244197 8749089 12169753 20090169 22581136 31347745 13050968 9045668 18564880 25387600 24789536 13142572 32...
result:
wrong answer 2nd lines differ - expected: '891079', found: '9246295'
Subtask #6:
score: 3
Accepted
Test #33:
score: 3
Accepted
time: 2ms
memory: 3256kb
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: 0
Accepted
time: 5ms
memory: 3404kb
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%