| Task: | String padding |
| Sender: | UnoK-admin |
| Submission time: | 2025-11-03 16:58:03 +0200 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.01 s | details |
| #7 | ACCEPTED | 0.02 s | details |
| #8 | ACCEPTED | 0.02 s | details |
| #9 | ACCEPTED | 0.02 s | details |
| #10 | ACCEPTED | 0.03 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.01 s | details |
| #13 | ACCEPTED | 0.00 s | details |
| #14 | ACCEPTED | 0.01 s | details |
| #15 | ACCEPTED | 0.01 s | details |
| #16 | ACCEPTED | 0.00 s | details |
| #17 | ACCEPTED | 0.00 s | details |
| #18 | ACCEPTED | 0.01 s | details |
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 |
