Submission #440493
Source Code Expand
#include <iostream>
#include <cstdio>
#include <cassert>
#include <cstring>
#include <vector>
#include <valarray>
#include <array>
#include <queue>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <complex>
#include <random>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll MD = 1e9+7;
ll dp[300][300][300];
int n, x;
string s;
ll solve(int a, int b, int k) {
k = max(0, k);
if (b == n) {
if (k) return 0;
return 1;
}
if (dp[a][b][k] != -1) return dp[a][b][k];
ll &res = dp[a][b][k];
if (a%2 == 0) {
if (s[b] == '2') {
res = solve(a+1, b+1, k);
} else if (s[b] != '?') {
res = solve(0, b+1, k);
} else {
res = solve(a+1, b+1, k) + 9*solve(0, b+1, k);
}
} else {
if (s[b] == '2') {
res = solve(1, b+1, k);
} else if (s[b] == '5') {
res = solve(a+1, b+1, k-(a+1)/2);
} else if (s[b] != '?') {
res = solve(0, b+1, k);
} else {
res = solve(1, b+1, k)+solve(a+1, b+1, k-(a+1)/2)+8*solve(0, b+1, k);
}
}
res %= MD;
return res;
}
int main() {
memset(dp, -1, sizeof(dp));
cin >> n >> x;
cin >> s;
cout << solve(0, 0, x) << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
A - ニコニコ文字列2 |
User |
yosupo |
Language |
C++11 (GCC 4.8.1) |
Score |
20 |
Code Size |
1449 Byte |
Status |
AC |
Exec Time |
512 ms |
Memory |
211888 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
20 / 20 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt |
All |
subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
436 ms |
211752 KB |
sample_02.txt |
AC |
441 ms |
211748 KB |
subtask1_01.txt |
AC |
446 ms |
211764 KB |
subtask1_02.txt |
AC |
441 ms |
211756 KB |
subtask1_03.txt |
AC |
440 ms |
211752 KB |
subtask1_04.txt |
AC |
435 ms |
211752 KB |
subtask1_05.txt |
AC |
435 ms |
211884 KB |
subtask1_06.txt |
AC |
440 ms |
211760 KB |
subtask1_07.txt |
AC |
434 ms |
211872 KB |
subtask1_08.txt |
AC |
436 ms |
211752 KB |
subtask1_09.txt |
AC |
437 ms |
211756 KB |
subtask1_10.txt |
AC |
434 ms |
211764 KB |
subtask1_11.txt |
AC |
433 ms |
211884 KB |
subtask1_12.txt |
AC |
434 ms |
211880 KB |
subtask1_13.txt |
AC |
436 ms |
211876 KB |
subtask1_14.txt |
AC |
430 ms |
211876 KB |
subtask1_15.txt |
AC |
437 ms |
211884 KB |
subtask1_16.txt |
AC |
438 ms |
211888 KB |
subtask1_17.txt |
AC |
512 ms |
211876 KB |
subtask1_18.txt |
AC |
437 ms |
211884 KB |
subtask1_19.txt |
AC |
507 ms |
211872 KB |
subtask1_20.txt |
AC |
438 ms |
211880 KB |
subtask1_21.txt |
AC |
431 ms |
211876 KB |
subtask1_22.txt |
AC |
428 ms |
211880 KB |