Submission #338425


Source Code Expand

#define _USE_MATH_DEFINES
#include <algorithm>
#include <cstdio>
#include <functional>
#include <iostream>
#include <cfloat>
#include <climits>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <vector>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> i_i;
typedef pair<ll, int> ll_i;
typedef pair<double, int> d_i;
typedef pair<ll, ll> ll_ll;
typedef pair<double, double> d_d;
struct edge { int u, v, w; };

ll MOD = 1000000007;
ll _MOD = 1000000009;
double EPS = 1e-10;
int INF = INT_MAX / 2;

int main() {
	int N, X; cin >> N >> X;
	string S; cin >> S;
	ll ans = 1;
	vector< vector<ll> > dp(N + 1, vector<ll>(X));
	if (X > 0) dp[0][0] = 1;
	for (int i = 0; i < N; i++) {
		char c = S[i];
		ans = ans * (c == '?' ? 10 : 1) % MOD;
		vector< vector<ll> > _dp(N + 1, vector<ll>(X));
		if (c == '2' || c == '?')
			for (int k = 0; k < X; k++) {
				for (int j = 0; j + 1 <= N; j += 2)
					_dp[j + 1][k] += dp[j][k];
				for (int j = 1; j + 1 <= N; j += 2)
					_dp[1][k] += dp[j][k];
			}
		if (c == '5' || c == '?')
			for (int k = 0; k < X; k++) {
				for (int j = 0; j + 1 <= N; j += 2)
					_dp[0][k] += dp[j][k];
				for (int j = 1; j + 1 <= N; j += 2) {
					int _k = k + (j + 1) / 2;
					if (_k < X) _dp[j + 1][_k] += dp[j][k];
				}
			}
		if (c != '2' && c != '5')
			for (int j = 0; j <= N; j++)
				for (int k = 0; k < X; k++)
					_dp[0][k] += dp[j][k] * (c == '?' ? 8 : 1);
		for (int j = 0; j <= N; j++)
			for (int k = 0; k < X; k++)
				dp[j][k] = _dp[j][k] % MOD;
	}
	for (int j = 0; j <= N; j++)
		for (int k = 0; k < X; k++)
			ans -= dp[j][k];
	cout << (ans % MOD + MOD) % MOD << endl;
}

Submission Info

Submission Time
Task A - ニコニコ文字列2
User sugim48
Language C++ (G++ 4.6.4)
Score 20
Code Size 1842 Byte
Status AC
Exec Time 687 ms
Memory 3208 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 20 / 20
Status
AC × 2
AC × 22
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 40 ms 2064 KB
sample_02.txt AC 39 ms 2064 KB
subtask1_01.txt AC 42 ms 2060 KB
subtask1_02.txt AC 40 ms 2204 KB
subtask1_03.txt AC 39 ms 2032 KB
subtask1_04.txt AC 38 ms 2064 KB
subtask1_05.txt AC 47 ms 2056 KB
subtask1_06.txt AC 78 ms 2196 KB
subtask1_07.txt AC 52 ms 2064 KB
subtask1_08.txt AC 66 ms 2188 KB
subtask1_09.txt AC 53 ms 2064 KB
subtask1_10.txt AC 44 ms 2068 KB
subtask1_11.txt AC 61 ms 2064 KB
subtask1_12.txt AC 626 ms 3208 KB
subtask1_13.txt AC 59 ms 2064 KB
subtask1_14.txt AC 607 ms 3096 KB
subtask1_15.txt AC 604 ms 3208 KB
subtask1_16.txt AC 603 ms 3100 KB
subtask1_17.txt AC 687 ms 3096 KB
subtask1_18.txt AC 564 ms 3092 KB
subtask1_19.txt AC 683 ms 3096 KB
subtask1_20.txt AC 605 ms 3092 KB
subtask1_21.txt AC 39 ms 2008 KB
subtask1_22.txt AC 37 ms 2064 KB