Submission details
Task:String padding
Sender:UnoK-admin
Submission time:2025-11-03 16:58:03 +0200
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.02 sdetails
#8ACCEPTED0.02 sdetails
#9ACCEPTED0.02 sdetails
#10ACCEPTED0.03 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.01 sdetails
#15ACCEPTED0.01 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.01 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:39:23: warning: array subscript has type 'char' [-Wchar-subscripts]
   39 |                     z[c][i] = j;
      |                       ^
input/code.cpp:49:27: warning: array subscript has type 'char' [-Wchar-subscripts]
   49 |                 int p = z[c][j];
      |                           ^

Code

#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pb push_back
#define VI vector<int>
#define AR(x) array<int, x>
#define MX vector<VI >
#define all(x) x.begin(), x.end()
#define IOS cin.tie(0)->sync_with_stdio(0)

using namespace std;

const int P = 1e9+7;

int dp[1010][101];
int z[256][101];

int main(){

    int n;
    cin >> n;

    string s;
    cin >> s;

    int m = s.size();

    // dp[i][j] -> #valid strings
    // i -> length of string
    // j -> j last characters match prefix of forbidden string
    dp[0][0] = 1;

    for(int i=0; i<m; i++){
        for(char c='A'; c<='Z'; c++){
            string x = s.substr(0, i);
            x.pb(c);
            for(int j=min(s.size(), x.size()); j>=0; j--){
                if(x.substr(x.size()-j, j) == s.substr(0, j)){
                    z[c][i] = j;
                    break;
                }
            }
        }
    }

    for(int i=1; i<=n; i++){
        for(char c='A'; c<='Z'; c++){
            for(int j=0; j<m; j++){
                int p = z[c][j];
                dp[i][p] = (dp[i][p]+dp[i-1][j])%P;
            }
        }
    }

    int ans = 1;
    int d = 'Z'-'A'+1;
    for(int i=0; i<n; i++) ans = (ll)ans*d%P;

    for(int i=0; i<m; i++) ans = (ans-dp[n][i])%P;

    ans = (ans+P)%P;

    cout << ans << '\n';

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
100
YWANYWAZYWANYWA

correct output
134837038

user output
134837038

Test 2

Verdict: ACCEPTED

input
100
EDMXEDVNEDMXED

correct output
642715950

user output
642715950

Test 3

Verdict: ACCEPTED

input
100
SDARSDAWVSDARSDA

correct output
748728234

user output
748728234

Test 4

Verdict: ACCEPTED

input
100
HBDHBSHBDHB

correct output
594110560

user output
594110560

Test 5

Verdict: ACCEPTED

input
100
CUNXUYGNGNEROXVLASQB

correct output
675706202

user output
675706202

Test 6

Verdict: ACCEPTED

input
1000
LZAOLRKGLZAOLXLZAOLRKGLZAOLTLZ...

correct output
318756627

user output
318756627

Test 7

Verdict: ACCEPTED

input
1000
SUASJSUASSGDSUASJSUASGKSUASJSU...

correct output
367950233

user output
367950233

Test 8

Verdict: ACCEPTED

input
1000
NHYGNHEWNHYGNHFSNHYGNHEWNHYGNH...

correct output
849646061

user output
849646061

Test 9

Verdict: ACCEPTED

input
1000
ZOCUZOCGRFZOCUZOCOQZOCUZOCGRFZ...

correct output
32142571

user output
32142571

Test 10

Verdict: ACCEPTED

input
1000
LJZMKDTECKBXBTQQUMLGADBDNGWGPY...

correct output
26128120

user output
26128120

Test 11

Verdict: ACCEPTED

input
1
A

correct output
1

user output
1

Test 12

Verdict: ACCEPTED

input
100
AVXETIDRHKPAKRBEAAVHLOPFACULSE...

correct output
228794815

user output
228794815

Test 13

Verdict: ACCEPTED

input
3
ABC

correct output
1

user output
1

Test 14

Verdict: ACCEPTED

input
745
RRQOVUJRQBIMIQK

correct output
504765084

user output
504765084

Test 15

Verdict: ACCEPTED

input
666
ABCABCDABCABCX

correct output
920654188

user output
920654188

Test 16

Verdict: ACCEPTED

input
6
AA

correct output
2212651

user output
2212651

Test 17

Verdict: ACCEPTED

input
1
B

correct output
1

user output
1

Test 18

Verdict: ACCEPTED

input
1000
OMAKARAAA

correct output
408042378

user output
408042378