QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#423457#7518. GCD of Pattern MatchingpandapythonerTL 468ms3864kbC++172.3kb2024-05-28 02:50:072024-05-28 02:50:07

Judging History

你现在查看的是最新测评结果

  • [2024-05-28 02:50:07]
  • 评测
  • 测评结果:TL
  • 用时:468ms
  • 内存:3864kb
  • [2024-05-28 02:50:07]
  • 提交

answer

#pragma GCC optimize("Ofast,unroll-loops,fast-math")
// #pragma GCC target("avx,avx2")


#include <bits/stdc++.h>


using namespace std;


#define ll long long
#define flt double
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()


const ll inf = 1e18;
mt19937 rnd(234);
const ll mod = 1e9 + 7;
typedef complex<flt> base;
const flt pi = atan2(1, 0) * 2;





int32_t main() {
    if (1) {
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    }
    int t;
    cin >> t;
    for (int itr = 0; itr < t; itr += 1) {
        int m;
        string s;
        cin >> m >> s;
        string f = s;
        sort(all(f));
        f.resize(unique(all(f)) - f.begin());
        assert((int)f.size() <= m);
        int n = (int)s.size();
        vector<int> a(n);
        for (int i = 0; i < n; i += 1) {
            a[i] = lower_bound(all(f), s[i]) - f.begin();
        }
        vector<int> p(m);
        for (int i = 0; i < m; i += 1) {
            p[i] = i;
        }
        unsigned ll rs = 0;
        unsigned ll x = 0;
        shuffle(all(p), rnd);
        for (int i = 0; i < n; i += 1) {
            x = x * m + p[a[i]];
        }
        vector<unsigned ll> vals(m);
        unsigned ll pwr = 1;
        for (int i = n - 1; i >= 0; i -= 1) {
            vals[a[i]] += pwr;
            pwr *= m;
        }
        for (ll r = 0; r < 60; r += 1) {
            for (int aboba = 0; aboba < 8; aboba += 1) {
                int i = rnd() % m;
                int j = rnd() % m;
                x -= vals[i] * p[i] + vals[j] * p[j];
                swap(p[i], p[j]);
                x += vals[i] * p[i] + vals[j] * p[j];
            }
            if(p[a[0]] == 0){
                continue;
            }
            /*
            shuffle(all(p), rnd);
            if (p[a[0]] == 0) {
                continue;
            }
            unsigned ll x = 0;
            for (int i = 0; i < m; i += 1) {
                x += vals[i] * p[i];
            }
            */
            if (rs == 0) {
                rs = x;
            } else if (x % rs != 0) {
                rs = gcd(rs, x);
            }
        }
        cout << rs << "\n";
    }
    return 0;
}

/*
1
16 abcdefghijklmnop

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3568kb

input:

5
10 ccpcccpc
10 cpcpcp
10 cpc
4 cpccpc
4 dhcp

output:

10001
10101
1
65
3

result:

ok 5 number(s): "10001 10101 1 65 3"

Test #2:

score: 0
Accepted
time: 1ms
memory: 3628kb

input:

30
2 ab
3 abc
4 abcd
5 abcde
6 abcdef
7 abcdefg
8 abcdefgh
9 abcdefghi
10 abcdefghij
11 abcdefghijk
12 abcdefghijkl
13 abcdefghijklm
14 abcdefghijklmn
15 abcdefghijklmno
16 abcdefghijklmnop
16 a
16 ab
16 abc
16 abcd
16 abcde
16 abcdef
16 abcdefg
16 abcdefgh
16 abcdefghi
16 abcdefghij
16 abcdefghijk
...

output:

2
1
3
2
5
3
7
4
9
5
11
6
13
7
15
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

result:

ok 30 numbers

Test #3:

score: 0
Accepted
time: 0ms
memory: 3564kb

input:

12
10 abccbaabc
10 abcdeedcba
10 abccbaabccba
3 abccbaabccba
4 abcddcba
4 abcddcbaabcddcba
5 online
5 onlie
6 online
3 ccc
10 ccc
16 aaaaaaaaaaaaaaaa

output:

3
11
11000011
2920
15
983055
1
2
1
13
111
1229782938247303441

result:

ok 12 numbers

Test #4:

score: 0
Accepted
time: 0ms
memory: 3620kb

input:

21
13 abcccbbaccca
11 abcdcdeebdcdca
15 abcdcdeebdcdca
11 abcdcdeebdcacd
15 abcdcdeebdcacd
12 abcdcdeebbae
14 abcbadcbabcd
14 abcbaccbacbb
14 aaaaaabaabbab
10 aaaaabaababbb
9 aaaaabaababb
14 aaaaabaabbaba
10 aaaaabbaabaab
11 aaaaabbabbaabb
14 aaaababbbbbaba
12 aaaabbababbb
12 aaabaabbabab
13 aabaaab...

output:

183
4
4
4
4
1
38221
183
1
1
820
1
1
12
24326193
145
133
157
1064
1
145

result:

ok 21 numbers

Test #5:

score: 0
Accepted
time: 0ms
memory: 3864kb

input:

21
13 acccabbcccba
11 acdcdbeedcdcba
15 acdcdbeedcdcba
11 dcacdbeedcdcba
15 dcacdbeedcdcba
12 eabbeedcdcba
14 dcbabcdabcba
14 bbcabccabcba
14 babbaabaaaaaa
10 bbbabaabaaaaa
9 bbabaabaaaaa
14 ababbaabaaaaa
10 baabaabbaaaaa
11 bbaabbabbaaaaa
14 ababbbbbabaaaa
12 bbbababbaaaa
12 bababbaabaaa
13 bbababa...

output:

915
4
4
4
4
5
38221
183
157
79
5740
157
79
516
24326193
1015
665
785
1064
11
1015

result:

ok 21 numbers

Test #6:

score: 0
Accepted
time: 1ms
memory: 3564kb

input:

96
15 abbbcaacccba
16 cabacaabbccba
16 bcbbaaccabcba
16 bbccaacbabcba
16 bcbabbccaacba
16 abcacbcaccbba
16 accabcbabcbba
15 ccaaabccbbba
15 bbaaabbbbbba
16 abababbbbba
11 abbaabaabbbbba
16 ababbaaabbbbba
16 abbbaaaabbbbba
11 bababaababbbba
11 bababaabbbba
12 aababaabbbba
15 bbaaabbbba
16 aaaabbaaabb...

output:

416
157
157
157
157
157
157
416
416
89
516
1921
731
86
117
1015
176
731
187
665
2011170
516
785
2989355
40543655
63
67
731
731
86
1921
176
1357265
416
1015
416
416
176
785
731
1357265
516
86
63
1015
117
86
516
731
67
665
187
1921
86
516
516
86
665
63
785
187
2011170
1921
89
117
665
2989355
40543655
...

result:

ok 96 numbers

Test #7:

score: 0
Accepted
time: 1ms
memory: 3624kb

input:

96
15 abcccaacbbba
16 abccbbaacabac
16 abcbaccaabbcb
16 abcbabcaaccbb
16 abcaaccbbabcb
16 abbccacbcacba
16 abbcbabcbacca
15 abbbccbaaacc
15 abbbbbbaaabb
16 abbbbbababa
11 abbbbbaabaabba
16 abbbbbaaabbaba
16 abbbbbaaaabbba
11 abbbbabaababab
11 abbbbaababab
12 abbbbaababaa
15 abbbbaaabb
16 abbbbaaabba...

output:

32
1
1
1
1
1
1
32
32
1
12
17
17
2
3
145
16
17
17
133
402234
12
157
2989355
40543655
3
1
17
17
2
17
16
271453
32
145
32
32
16
157
17
271453
12
2
3
145
3
2
12
17
1
133
17
17
2
12
12
2
133
3
157
17
402234
17
1
3
133
2989355
40543655
1
3
145
1
3
157
1
17
3
133
1
2989355
40543655
157
1
3
3
1
157
145
1
3
...

result:

ok 96 numbers

Test #8:

score: 0
Accepted
time: 424ms
memory: 3644kb

input:

100000
15 abbbcaacccba
16 cabacaabbccba
16 bcbbaaccabcba
16 bbccaacbabcba
16 bcbabbccaacba
16 abcacbcaccbba
16 accabcbabcbba
15 ccaaabccbbba
15 bbaaabbbbbba
16 abababbbbba
11 abbaabaabbbbba
16 ababbaaabbbbba
16 abbbaaaabbbbba
11 bababaababbbba
11 bababaabbbba
12 aababaabbbba
15 bbaaabbbba
16 aaaabba...

output:

416
157
157
157
157
157
157
416
416
89
516
1921
731
86
117
1015
176
731
187
665
2011170
516
785
2989355
40543655
63
67
731
731
86
1921
176
1357265
416
1015
416
416
176
785
731
1357265
516
86
63
1015
117
86
516
731
67
665
187
1921
86
516
516
86
665
63
785
187
2011170
1921
89
117
665
2989355
40543655
...

result:

ok 100000 numbers

Test #9:

score: 0
Accepted
time: 0ms
memory: 3572kb

input:

22
15 dacbcbdddaddcba
15 bacdcdddbaddcba
15 bdedacaebecdcba
15 bdddacadbdcdcba
15 baaadcaabdcdcba
15 bdcdacacbccdcba
16 acccacddbbcdcba
16 acaccaddbbcdcba
15 bdbdacabbbcdcba
15 badddcddbacdcba
15 bdadacaabacdcba
15 abcddadddbcbcad
15 abcddabdddcdcab
15 abcdcebeacadedb
15 abcdcdbdacadddb
15 abcdcdbaa...

output:

2651
2651
2651
2651
2651
2651
3003
77
2651
2651
2651
241
241
241
241
241
241
273
1
241
241
241

result:

ok 22 numbers

Test #10:

score: 0
Accepted
time: 1ms
memory: 3792kb

input:

237
12 aaaaaaaa
12 aaaaaaaaa
4 aaaaaaaaaa
13 aaaaaaaaaaa
16 aaaaaaaaaaaa
6 aaaaaaaaaaaaa
6 aaaaaaaaaaaaaa
14 aaaababbbbbaba
14 aaaabbabba
8 aaabaabbbaa
4 aaabaabbbaabba
11 aaabababaaaa
7 aaabababbabbaa
16 aaabbabaabbbaa
3 aaabbbaaba
7 aaabbbaabaaa
11 aaabbbbabbaa
5 aaabbbbbbaaa
8 aabaabbababa
7 aaba...

output:

39089245
469070941
349525
149346699503
18764998447377
2612138803
15672832819
24326193
75
89
145
14763
58
1921
44
208
156
3906
285
312
13
30583
70
16
29
468799645
58593
55
113
65
13
29
43
203
665
46873
1460
232
21
2343
65
516
73015558161
2380
51
32
1555
187245
53
35
116
1015
52
2121
285212689
78
4156...

result:

ok 237 numbers

Test #11:

score: 0
Accepted
time: 142ms
memory: 3612kb

input:

30580
14 aaababbbbbaa
14 bccaaccccbaa
6 ccaacbabbbbbbcba
11 bedadacba
8 dgfceaedabcbaa
13 ebdeeabcdcba
15 aabacacaacccccba
3 aababaaaaababaaa
16 acbbabbbbccba
16 accbacbcccba
15 feddcbafeddcba
13 baaaacacabcbaa
9 dcbaaaaadcbdcba
7 bbbbabbbba
15 acdddbbaccba
5 cacbaabcaaabacba
16 dabadcbcdcba
7 babab...

output:

197
45
9079
1
1
5
17
65620
53
3
170859376
29
31
16808
241
204
65793
2
117650
2651
1
7568149
248833
1
513
3
1285
3003
19136585
11
1
1
17
1
77
2
3
2
58
1111
82
22049
62
328
13
20
32045
244
33
1
65
1
1000001
1
3003
1
3003
290730444229
1
1
1885
1
7
823544
50401
93
1
116
14065
532171
1475827473
183
78
1
...

result:

ok 30580 numbers

Test #12:

score: 0
Accepted
time: 84ms
memory: 3572kb

input:

19914
9 abaccacbbcba
5 abcdebadcbed
12 hgfedcba
14 abacdbefgfhgib
13 abcdefdabcdefd
9 abbaabba
11 abcddbbcacad
5 aaaaaaabaaba
6 badcfefedcba
13 faedabcfcedcba
12 eabbecdccaaba
7 abcdefdefabc
5 abcdcdddddab
7 abcccdbddcbadb
9 cbbabcbaccba
16 abaaabababbbab
16 abcacccabcbbba
11 abcaddeddebc
6 aaaaaaaa...

output:

5740
601
1
1
62748518
65620
133
126
185
29
1
344
26
8
73
17895697
1
1332
15672832819
273
1
4161
11111
1
69810262081
1085
4
2
1
31
257
8
1
1
3
121
65793
1
1
1
2
1
1
273
10
10
2
7529537
105413505
452
1
37
1
730
164
85
252
1
1
8
11
1
1001
1
156
1
3
2
11390626
3
4
89
1
17
10
67
2
3
3
8
17
30941
13
49155...

result:

ok 19914 numbers

Test #13:

score: 0
Accepted
time: 440ms
memory: 3576kb

input:

100000
7 mkjpmkjppkjm
13 ybyzybyzzbbz
14 ifvnvifvnv
6 gpgggkkkkppkgk
10 werrrrrerewe
4 ssbsbbssbsbb
8 oinyydinnodn
14 qtttqqtttqqq
5 mpmmpmpmpppmpm
16 cymwll
9 cwmwmfwfwycy
13 tqqttqqt
7 qqrrzqqrrqzr
4 utuugtyutyygtu
6 gkbzkb
6 ifypccpyfill
11 bhyhsssshbyshs
9 mxmxmxmxmxmx
4 eexemmmxxxem
4 ejeedjddj...

output:

57
20
537825
29
101
12291
9
3165
3
1
82
399868
2353
29
1
35
2
3530369206
85
1
1
1
5
364
105
241
2
1001
665
1
43053283
28
1
366
157
4097
806
1333
16
2380
4
1
730
54466
170859376
1
5
20593
7
65
597871
9901
28393
4
14
13
197
268435457
26
1
197
1
1
182
3
2
391251
1885
1000001
1
3
17
3
1
1
49
16
1
32
274...

result:

ok 100000 numbers

Test #14:

score: 0
Accepted
time: 468ms
memory: 3576kb

input:

100000
11 fnffffxxxfnnnxff
4 tvo
5 zuuy
8 dzazddzdddzddzaz
9 xxsxxssxssxs
9 oiuooiuo
9 cycycc
11 eueuueeseususues
13 gtjvwuyvwuyvgtjv
9 sqssqqaqqaasaas
11 rrrrrr
13 vlvlvvvlvvll
10 tsttpptwwsspttw
14 ninmnininimimmni
10 hyoyqhoiobzywqh
9 sxjgibgeojixl
5 lylwlwlw
7 yyrsvsatvaasvyrt
14 wqqqqwqwwqqwwww...

output:

1464
1
1
4097
730
6562
2
16
28562
7381
177156
785
3
591
1
1
1
1
697
16
257
73
6481
77
1
14521
1
15
1
1
145
785
1
1
15
2
257
1
137858863143
164025000064
1
183
2
11
1
1
1
1
13
1
1
24888
1
6
3003
288240100
45
3
391251
16
128
1
91
1
64
4369
15
2
3
113
3
7
16
1
1
1
13
1
16385
40
1
65537
820
1
8
14
1
17
1...

result:

ok 100000 numbers

Test #15:

score: 0
Accepted
time: 443ms
memory: 3640kb

input:

100000
13 irqnk
13 hfknacfcqcncqn
12 pasppdsdcwt
14 jdceaecccejade
13 ppjppfmttjttfm
13 ndedewndedew
13 axpbbjpba
15 ytsfxaseeae
14 hfoppnhhbf
13 npxdxdnp
14 ztvnqluxzmoucz
13 ggfxfxsssfxg
14 lslmsqquszqml
14 attfgtfa
16 uglmtlmtdugd
13 lazualviuzibbv
15 easvosovoeav
12 zmrjoomrjz
14 usufqmqsmfmm
13...

output:

1
1
1
1
98
4826810
1
1
1
170
1
183
1
1
4097
14
211
13
197
53
4
1
16
15
1
1
38613
15
35831809
1
1
211
28393
226
4097
2745
43
157
1729
1
2
14
16777217
1
16
38221
1
1
1
2985985
1
1
2
157
16
53
273
1
4826810
1
2
273
157
38221
1
211
1
13
170859376
7
1
1
371294
50851
53
1
1
1
1
1
3
98
1
13
537825
1
28393
...

result:

ok 100000 numbers

Test #16:

score: 0
Accepted
time: 442ms
memory: 3860kb

input:

100000
15 cococcciccio
14 tqskqskqssqkkt
12 vfbvbwfbwbiiff
12 waaawwawaaaw
14 hwwwwwhhhh
15 aaaaaxxbxbax
16 otpddvhothvp
15 hhsdihddhkoxs
16 faourogfggff
15 jottjtttjtot
14 vhwuwwwvhwhwuh
14 jjqqqqjj
13 giiigiiiigig
15 hhhsssshshhhhs
13 orraoobaarbb
12 xrjbrjrbrxrb
12 kkqqkkkqqkkq
13 gfttgffgggtg
14...

output:

211
15
13
1
41371
226
17
1
1
211
15
2955
28
16
183
133
20593
183
540765
1
14
4829007
15
2745
183
1
373660
5
1048577
38613
98
1
183
1048577
1052929
7
1
98
2
2
7
50626
1015
170859376
187
35831809
4369
11
1
30583
8
2
13
250705
1
3
4826810
13
50401
15
11
4826810
65
30583
762976
1921
183
273
41371
1
2432...

result:

ok 100000 numbers

Test #17:

score: 0
Accepted
time: 454ms
memory: 3572kb

input:

100000
16 xbwbpxbwbpxbwbp
14 xdeeeexdxdxddxxx
15 ftngoxoxngft
13 ooooow
12 kotkbyktykotyobt
16 lugfwllugfwl
16 izfkfzzkkfifffi
12 iyaveivbbc
15 jeoyootteoyj
13 xkmmmrmmhxxxkmhr
15 gshgghhwbhsssgwb
14 joqdwkqwokdq
16 whdwhwhdwhwhddd
16 dsencgesdecsnpg
16 ccddccccdddcdc
13 ynyfvnnynyfv
14 jlezlwleeezj...

output:

1099512676353
3
226
1
5
16777217
273
1
16
2
16
1
5
1
113
14
15
3
1
2
815759283
371294
1
2745
157
1
1
1
2
1
1
4369
17
1
3003
1
157
23298900881764
38221
1
3
50626
32
1
1
3
77
1475789057
1
1
170
28562
65281
1885
1
1
35831809
883306230
1
11441476
1
1
3006865
2
1
1
53
1
1
1
241
62748518
65537
1
1
1
14
20...

result:

ok 100000 numbers

Test #18:

score: 0
Accepted
time: 449ms
memory: 3580kb

input:

100000
16 pssssspssssssps
12 rsssrc
12 llaaflfaffff
14 pgivzqqqqgivzpqp
14 pnpnpppnpnnnnppp
13 qqqqqqqqqqq
15 jjgjjjgjjjjjjgjg
16 qcccccqcqqqcqcc
13 haahahhhah
16 pgpggzzzppzpzgz
14 jjljlllljljljjj
16 rrorrooorrorrooo
16 hezhhezhhezh
12 tnccrcn
14 lrrrrlrrrrll
12 beojbeojbeoj
13 uzxtmyglmzgy
12 qqnn...

output:

3
1
157
1
123
149346699503
64
3
22
1
1
73014444049
4295032833
1
8865
430002433
1
1261
3003
273
399868
1
2745
665
183
1
24326193
226
187
157
1
3
273
20
7568149
157
1
1
145
85
2
1
915
2562890626
2
429981697
1
7568149
1
1
2198
273
1
1
197
1
1
197
1
13
1
10
1
2
228496
17
799736
1
255
3376
16
3
16
1
1
21...

result:

ok 100000 numbers

Test #19:

score: -100
Time Limit Exceeded

input:

500000
16 rbrbrbbrrbbrrrr
13 sassssaasaasaas
3 zz
10 zzzzz
6 bibbibbiibiiibbi
10 ppppppppppppppp
2 xxmxmmxmmxxxm
12 rrrrrrrrrrrr
4 ccoc
12 pppppppppp
2 kkkkkkkkkk
10 bbbbbbbbb
8 vdd
5 ooooooooooo
15 xuxx
14 saassasaa
15 n
3 ddddddddd
7 hhh
10 yyyyyyyyyyy
2 l
5 eeeeeeeeeeeeee
10 kkktttttkktk
15 sssss...

output:

3
1
4
11111
119
111111111111111
6734
810554586205
1
5628851293
1023
111111111
1
12207031
1
1
1
9841
57
11111111111
1
1525878906
33
54241
1
1093
43
1
7
3
11
31
6
1
29524
1
1
111
1
1
273
1
469172025408063616
299593
13
4265491084507563
1
883708281
47989
1
1
14
8
31
116719860413533
597871
1
1
960800
610...

result: