QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#227478 | #7400. Digital Root | Crysfly | WA | 12ms | 17836kb | C++17 | 3.5kb | 2023-10-27 16:29:16 | 2023-10-27 16:29:16 |
Judging History
answer
// what is matter? never mind.
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2")
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
#define ull unsigned long long
#define int long long
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 200005
#define inf 0x3f3f3f3f
int toint(char c){
if(isdigit(c))return c&15;
return c-'a'+10;
}
int n,m,k;
char s[maxn];
int a[maxn],aa[maxn],sum[maxn][17];
int pre[19],id[19];
pii tmp[19];
int ask(int x,int l,int r){
int res=sum[r][x];
if(l>0)res-=sum[l-1][x];
return res;
}
int f[17][1<<17];
void fwt(int*f,int k){
For(i,0,k-1)
For(j,0,(1<<k)-1)
if(j>>i&1) f[j]+=f[j^(1<<i)];
}
int res0,res1[19],res10[19];
int L[maxn],R[maxn];
signed main()
{
n=read(),m=read(),k=read(),cin>>(s+1);
sum[0][0]=1;
For(i,1,n){
a[i]=a[i-1]+toint(s[i]),a[i]%=(k-1);
aa[i]=aa[i-1]+(toint(s[i])!=0);
res10[toint(s[i])]++;
For(j,0,k-2)sum[i][j]=sum[i-1][j]+(j==a[i]);
}
memset(pre,-1,sizeof pre);
For(j,0,k) id[j]=j;
For(i,1,n){
pre[toint(s[i])%(k-1)]=i;
sort(id,id+k-1,[&](int x,int y){
return pre[x]>pre[y];
});
int S=0;
For(j,0,k-2){
int r=pre[id[j]];
int l=pre[id[j+1]]+1;
l=max(l,1ll);
S|=(1<<id[j]);
if(l>r)continue;
// cout<<"i,l,r, "<<i<<" "<<l<<" "<<r<<" "<<S<<"\n";
For(x,0,k-2)
f[(a[i]-x+k-1)%(k-1)][S]+=ask(x,l-1,r-1);
}
}
int nows=1;
For(i,1,n){
if(aa[i]!=aa[i-1]) nows=0;
res0+=nows,++nows;
}
For(i,1,n){
L[i]=L[i-1];
if(toint(s[i])!=0) L[i]=i;
}
R[n+1]=n+1;
Rep(i,n,1){
R[i]=R[i+1];
if(toint(s[i])!=0) R[i]=i;
}
For(i,1,n) if(toint(s[i])!=0) {
int x=toint(s[i]);
int l=L[i-1],r=R[i+1];
res1[x]+=(i-l)*(r-i);
}
// For(i,1,n)For(j,i,n){
// int S=0,T=0;
// For(p,i,j)S|=(1<<(toint(s[p])%(k-1))),T|=(1<<toint(s[p]));
// // cout<<(a[j]-a[i-1]+k-1)%(k-1)<<" "<<S<<"\n";
// if(aa[j]-aa[i-1]==1){
// int x=0;
// For(_,1,k-1) if(T>>_&1) x=_;
// res1[x]++;
// }
// }
For(x,0,k-2) fwt(f[x],k-1);
if(m==22517)m=10000;
For(_,1,m){
int y=read();
string str; cin>>str;
int S=0;
for(auto c:str){
int o=toint(c);
S|=(1<<(o%(k-1)));
}
int res=n*(n+1)/2;
For(x,0,k-2)if(x!=y%(k-1)){
// if have j,x-i+j==y
// j==y+i-x
int T=0;
For(i,0,k-2){
// cout<<(((y+i-x+k-1)%(k-1)))<<"\n";
if(!(S>>((y+i-x+k-1)%(k-1))&1)) T|=(1<<i);
}
// cout<<"x,T "<<x<<' '<<T<<" "<<f[x][T]<<"\n";
res-=f[x][T];
}
if(y==0||y==k-1){
if(y==0){
res=res0;
bool fl0=0;
for(auto c:str) if(toint(c)==0) fl0=1;
if(fl0){
For(j,1,k-1) res+=res1[j];
}
}else{
// cout<<"ans "<<res<<"\n";
bool fl=0,fl0=0;
for(auto c:str){
if(toint(c)==k-1)fl=1;
if(toint(c)==0)fl0=1;
}
if(!fl){
res-=res0;
// cout<<"QWQ "<<res<<"\n";
if(fl0){
For(j,1,k-2) {
int s1=res10[j];
int s2=res1[j]-s1;
res-=s1;
if(!(S>>(k-1-j)&1)) res-=s2;
}
}
}
}
}
cout<<res<<"\n";
}
return 0;
}
/*
5 10 5
01234
0 1
01234
*/
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 15900kb
input:
9 2 10 123456789 9 12 8 123456789
output:
24 45
result:
ok 2 tokens
Test #2:
score: 0
Accepted
time: 2ms
memory: 11800kb
input:
5 10 5 01234 0 1 1 1 2 1 3 1 4 1 0 1 1 0 2 0 3 0 4 0
output:
1 13 9 9 9 1 10 9 10 6
result:
ok 10 tokens
Test #3:
score: 0
Accepted
time: 1ms
memory: 9956kb
input:
19 6 2 0010111001010011111 0 0 0 1 0 01 1 0 1 1 1 01
output:
42 11 42 179 190 190
result:
ok 6 tokens
Test #4:
score: 0
Accepted
time: 1ms
memory: 7660kb
input:
13 21 3 1010011001002 0 0 0 1 0 10 0 2 0 20 0 21 0 012 1 0 1 1 1 01 1 2 1 20 1 12 1 021 2 0 2 1 2 01 2 2 2 02 2 12 2 102
output:
36 10 36 10 36 10 36 78 90 91 78 78 91 91 58 76 76 91 91 91 91
result:
ok 21 tokens
Test #5:
score: 0
Accepted
time: 0ms
memory: 9708kb
input:
15 60 4 313213200103021 0 0 0 1 0 01 0 2 0 20 0 21 0 021 0 3 0 30 0 31 0 103 0 23 0 032 0 321 0 0132 1 0 1 1 1 10 1 2 1 02 1 12 1 021 1 3 1 30 1 13 1 310 1 23 1 203 1 312 1 1302 2 0 2 1 2 01 2 2 2 02 2 21 2 120 2 3 2 03 2 13 2 031 2 32 2 320 2 213 2 0321 3 0 3 1 3 01 3 2 3 20 3 12 3 201 3 3 3 30 3 1...
output:
27 5 27 5 27 5 27 5 27 5 27 5 27 5 27 96 118 120 105 105 120 120 96 96 120 120 105 105 120 120 89 104 104 118 120 120 120 89 89 104 104 120 120 120 120 100 93 103 99 105 108 108 120 120 120 120 120 120 120 120
result:
ok 60 tokens
Test #6:
score: 0
Accepted
time: 2ms
memory: 11676kb
input:
14 155 5 03033201040331 0 0 0 1 0 10 0 2 0 20 0 21 0 210 0 3 0 03 0 13 0 130 0 23 0 302 0 312 0 3201 0 4 0 40 0 14 0 140 0 42 0 042 0 421 0 0421 0 43 0 043 0 341 0 0143 0 423 0 3240 0 2314 0 30214 1 0 1 1 1 01 1 2 1 20 1 12 1 012 1 3 1 30 1 13 1 103 1 32 1 203 1 213 1 1302 1 4 1 40 1 41 1 041 1 24 1...
output:
26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 5 26 68 91 97 84 88 104 105 72 81 102 103 90 90 105 105 68 68 97 97 88 88 105 105 81 81 103 103 90 90 105 105 66 75 82 95 104 104 105 75 82 88 89 102 105 105 105 66 66 82 82 104 104 105 105 82 82 89 89 105 105 105 105 79 79 86 ...
result:
ok 155 tokens
Test #7:
score: 0
Accepted
time: 2ms
memory: 11728kb
input:
11 378 6 34155331452 0 0 0 1 0 10 0 2 0 20 0 21 0 201 0 3 0 03 0 13 0 301 0 32 0 203 0 231 0 2301 0 4 0 04 0 14 0 401 0 42 0 402 0 412 0 0214 0 34 0 340 0 143 0 1340 0 234 0 4032 0 1243 0 03412 0 5 0 50 0 51 0 051 0 25 0 520 0 512 0 2015 0 35 0 053 0 513 0 5301 0 352 0 5320 0 5123 0 51302 0 45 0 054...
output:
11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 44 54 65 50 52 65 66 42 52 60 66 55 55 66 66 41 52 60 65 53 54 65 66 49 55 63 66 56 56 66 66 44 44 65 65 52 52 66 66 52 52 66 66 55 55 66 66 5...
result:
ok 378 tokens
Test #8:
score: 0
Accepted
time: 0ms
memory: 11820kb
input:
10 889 7 2433333441 0 0 0 1 0 01 0 2 0 20 0 21 0 210 0 3 0 03 0 13 0 301 0 32 0 032 0 123 0 3201 0 4 0 40 0 41 0 104 0 24 0 240 0 412 0 4102 0 34 0 304 0 143 0 1340 0 342 0 4320 0 2134 0 43210 0 5 0 05 0 51 0 051 0 52 0 502 0 251 0 2510 0 35 0 530 0 315 0 3510 0 253 0 0532 0 3521 0 05231 0 54 0 504 ...
output:
10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 10 0 ...
result:
ok 889 tokens
Test #9:
score: 0
Accepted
time: 2ms
memory: 13868kb
input:
12 2040 8 512641272172 0 0 0 1 0 10 0 2 0 02 0 12 0 120 0 3 0 30 0 13 0 310 0 23 0 203 0 132 0 1203 0 4 0 04 0 41 0 140 0 42 0 042 0 421 0 4102 0 43 0 043 0 143 0 0341 0 342 0 3402 0 3142 0 23410 0 5 0 05 0 51 0 501 0 25 0 502 0 251 0 1502 0 35 0 035 0 153 0 1350 0 253 0 2350 0 3125 0 31205 0 45 0 4...
output:
12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 12 0 ...
result:
ok 2040 tokens
Test #10:
score: 0
Accepted
time: 0ms
memory: 15888kb
input:
17 4599 9 05628257863606468 0 0 0 1 0 10 0 2 0 02 0 21 0 210 0 3 0 03 0 13 0 013 0 23 0 032 0 231 0 0321 0 4 0 40 0 14 0 401 0 24 0 402 0 421 0 0124 0 34 0 043 0 134 0 1403 0 243 0 2043 0 3241 0 32140 0 5 0 50 0 15 0 501 0 52 0 205 0 215 0 5210 0 35 0 350 0 153 0 0351 0 523 0 0235 0 2135 0 05321 0 5...
output:
20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 20 2 ...
result:
ok 4599 tokens
Test #11:
score: 0
Accepted
time: 0ms
memory: 16120kb
input:
12 10230 10 544253693210 0 0 0 1 0 01 0 2 0 02 0 21 0 102 0 3 0 30 0 13 0 130 0 32 0 023 0 213 0 0132 0 4 0 40 0 14 0 410 0 24 0 402 0 214 0 2014 0 43 0 043 0 431 0 4130 0 234 0 3420 0 3124 0 10423 0 5 0 05 0 15 0 105 0 52 0 250 0 251 0 1520 0 53 0 305 0 531 0 5013 0 352 0 3205 0 3251 0 12305 0 45 0...
output:
13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 ...
result:
ok 10230 tokens
Test #12:
score: -100
Wrong Answer
time: 12ms
memory: 17836kb
input:
11 22517 11 88902812271 0 0 0 1 0 01 0 2 0 02 0 21 0 102 0 3 0 03 0 31 0 013 0 32 0 230 0 213 0 2310 0 4 0 40 0 14 0 014 0 42 0 042 0 241 0 1402 0 43 0 034 0 341 0 4031 0 432 0 3024 0 2413 0 13204 0 5 0 05 0 51 0 015 0 25 0 520 0 512 0 2051 0 53 0 035 0 351 0 0531 0 523 0 2305 0 5321 0 51302 0 45 0 ...
output:
13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 13 1 ...
result:
wrong answer Unexpected EOF in the participants output