제출 #707793

#제출 시각아이디문제언어결과실행 시간메모리
707793TAhmed33Mate (COCI18_mate)C++98
0 / 100
51 ms65968 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector <int> arr; int n; int dp[26][26][2001] = {}; const int MOD = 1e9 + 7; int ncr[2001][2001]; signed main () { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; n = s.length(); for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++) { if (j == 0 || j == i) { ncr[i][j] = 1; } else if (i < j) { ncr[i][j] = 0; } else { ncr[i][j] = ncr[i - 1][j] + ncr[i - 1][j - 1]; if (ncr[i][j] >= MOD) ncr[i][j] -= MOD; } } } arr.push_back(8); for (int i = 0; i < n; i++) { arr.push_back(s[i] - 'a'); } for (int i = 1; i <= n - 1; i++) { for (int j = i + 1; j <= n; j++) { for (int k = 2; k <= i + 1; k++) { dp[k][arr[i]][arr[j]] += ncr[i - 1][i + 1 - k]; if (dp[k][arr[i]][arr[j]] >= MOD) dp[k][arr[i]][arr[j]] -= MOD; } } } int q; cin >> q; while (q--) { int d; char a, b; cin >> d >> a >> b; int x = a - 'a'; int y = b - 'a'; cout << dp[d][x][y] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...