QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#644075 | #2018. 字符串匹配 | remmymilkyway | 100 ✓ | 732ms | 29608kb | C++14 | 1.4kb | 2024-10-16 10:40:59 | 2024-10-16 10:41:01 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1048580;
int n;
char S[maxn];
ll msk[maxn], sum[maxn];
struct hsh {
ll rad, mod, arr[maxn], pw[maxn];
hsh(ll x, ll y) {
rad = x;
mod = y;
}
void init(char* s) {
arr[0] = 0;
int n = strlen(s + 1);
for (int i = 1; i <= n; i++) {
arr[i] = (arr[i - 1] * rad % mod + (s[i] - 'a')) % mod;
}
pw[0] = 1;
for (int i = 1; i <= n; i++) {
pw[i] = pw[i - 1] * rad % mod;
}
}
ll getseg(int l, int r) {
return (arr[r] + mod - arr[l - 1] * pw[r - l + 1] % mod) % mod;
}
};
void solve() {
scanf("%s", S + 1);
n = strlen(S + 1);
hsh h(31, 998244353);
h.init(S);
for (int i = 1; i <= n; i++) {
msk[i] = msk[i - 1] ^ (1 << (S[i] - 'a'));
}
for (int i = 0; i <= 26; i++) {
sum[i] = 0;
}
ll ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = i; j < n; j += i) {
if (h.getseg(j - i + 1, j) != h.getseg(1, i)) {
break;
}
ans += sum[__builtin_popcount(msk[n] ^ msk[j])];
}
for (int j = __builtin_popcount(msk[i]); j <= 26; j++) {
sum[j]++;
}
}
printf("%lld\n", ans);
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Pretests
Final Tests
Test #1:
score: 4
Accepted
time: 0ms
memory: 20192kb
input:
5 jjjjjjjjjj lllllllcyg mgmgmgmgmg nycqtnycqt tdutduwyga
output:
30 39 30 20 33
result:
ok 5 tokens
Test #2:
score: 4
Accepted
time: 3ms
memory: 20124kb
input:
5 hhhhhhhhhh iiiiiiibkw dgdgdgdgdg ffffffffyf ffzffzwsnw
output:
30 39 30 44 36
result:
ok 5 tokens
Test #3:
score: 4
Accepted
time: 0ms
memory: 20220kb
input:
5 rrrrrrrrrr iiiiiiiwzr dididididi wwwwzqcjvv mbymbyhgpc
output:
30 39 30 28 33
result:
ok 5 tokens
Test #4:
score: 4
Accepted
time: 0ms
memory: 20236kb
input:
5 cccccccccc lllllllket tututututu ccbuxccbux pnppnpnlwl
output:
30 39 30 26 32
result:
ok 5 tokens
Test #5:
score: 4
Accepted
time: 0ms
memory: 20144kb
input:
5 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubgmwdgmgwvqvkbcvihsk qdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaa csqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxf...
output:
6590 3585 2313 4359 4486
result:
ok 5 tokens
Test #6:
score: 4
Accepted
time: 6ms
memory: 20408kb
input:
5 llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllsuqtxhunfvotmxfqebwj rpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpia yyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaz...
output:
6564 3560 2607 4517 4554
result:
ok 5 tokens
Test #7:
score: 4
Accepted
time: 0ms
memory: 20180kb
input:
5 nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkvpnzxdkdhjucliujhhl quegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegqueg aicsiooegbozaohagssdehvjzaicsiooegbozaohagssdehvjzaicsiooegbozaohagssdehvjzaicsiooegbozaohagssde...
output:
6517 3560 2888 4965 4105
result:
ok 5 tokens
Test #8:
score: 4
Accepted
time: 0ms
memory: 22224kb
input:
5 ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppphytnmeyelaxegcuzqkv joksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoks yqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqp...
output:
6604 3560 2738 4804 4832
result:
ok 5 tokens
Test #9:
score: 4
Accepted
time: 0ms
memory: 20172kb
input:
5 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...
output:
690923 325466 274377 538726 519032
result:
ok 5 tokens
Test #10:
score: 4
Accepted
time: 3ms
memory: 22240kb
input:
5 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...
output:
688611 325466 278014 483768 516890
result:
ok 5 tokens
Test #11:
score: 4
Accepted
time: 0ms
memory: 20188kb
input:
5 rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...
output:
690572 325466 282653 400319 517082
result:
ok 5 tokens
Test #12:
score: 4
Accepted
time: 3ms
memory: 22232kb
input:
5 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj...
output:
689440 325466 278624 464740 501911
result:
ok 5 tokens
Test #13:
score: 4
Accepted
time: 11ms
memory: 20428kb
input:
5 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...
output:
714173984 606072908 715934994 603558188 714547382
result:
ok 5 tokens
Test #14:
score: 4
Accepted
time: 15ms
memory: 22444kb
input:
5 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv...
output:
713410981 603184777 713761452 714012718 603184777
result:
ok 5 tokens
Test #15:
score: 4
Accepted
time: 24ms
memory: 20728kb
input:
5 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...
output:
3502305645 3504362490 3495279874 3496151003 2412446034
result:
ok 5 tokens
Test #16:
score: 4
Accepted
time: 28ms
memory: 22988kb
input:
5 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...
output:
2419023179 3481792643 2416893029 3498851133 2414888013
result:
ok 5 tokens
Test #17:
score: 4
Accepted
time: 29ms
memory: 25008kb
input:
5 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd...
output:
2414715183 2414053265 3498760311 2415418741 2412193453
result:
ok 5 tokens
Test #18:
score: 4
Accepted
time: 39ms
memory: 25176kb
input:
5 uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu...
output:
14044909130 13758605640 8021703699 4927122703 9489413350
result:
ok 5 tokens
Test #19:
score: 4
Accepted
time: 42ms
memory: 21252kb
input:
5 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...
output:
14044820948 13781146461 7453935828 4673360128 9488558416
result:
ok 5 tokens
Test #20:
score: 4
Accepted
time: 44ms
memory: 25244kb
input:
5 rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...
output:
14044830602 13805450160 7984918891 4873659736 9491430029
result:
ok 5 tokens
Test #21:
score: 4
Accepted
time: 39ms
memory: 24664kb
input:
5 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
14044823925 13789617860 7597752918 4978465106 9490927685
result:
ok 5 tokens
Test #22:
score: 4
Accepted
time: 481ms
memory: 29388kb
input:
5 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...
output:
903628883069 902178522904 467114641327 305284235317 620652587747
result:
ok 5 tokens
Test #23:
score: 4
Accepted
time: 467ms
memory: 29392kb
input:
5 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...
output:
903629704237 901055755987 504315438243 304698187610 620653531389
result:
ok 5 tokens
Test #24:
score: 4
Accepted
time: 716ms
memory: 29608kb
input:
5 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...
output:
904243010503 904253960505 904235088477 667900329073 904248230739
result:
ok 5 tokens
Test #25:
score: 4
Accepted
time: 732ms
memory: 29392kb
input:
5 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...
output:
904261912252 904260123920 904263261760 667900331468 904241569561
result:
ok 5 tokens
Extra Test:
score: 0
Extra Test Passed