1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> #include <cstring> using namespace std; const int M = 1051962371; const int N = 100; long long dp[N+1][N+1][N+1]; long long go(int n, int r, int target) { if (n == 0) return (target == 0 ? 1 : 0); if (dp[n][r][target] >= 0) return dp[n][r][target]; int w = n-r; long long ways = 0; if (r > 0) ways += go(n-1, r-1, target > 0 ? target-1 : 0), ways %= M; if (r > 1) ways += (r-1) * go(n-1, r-2, target), ways %= M; if (w > 0) ways += w * go(n-1, r > 0 ? r-1 : 0, target), ways %= M; return dp[n][r][target] = ways; } int main() { memset(dp, 0xff, sizeof(dp)); int n; cin >> n; while (n--) { int g, c; cin >> g >> c; cout << go(g, g, c) << endl; } return 0; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTSA9IDEwNTE5NjIzNzE7CmNvbnN0IGludCBOID0gMTAwOwoKbG9uZyBsb25nIGRwW04rMV1bTisxXVtOKzFdOwoKbG9uZyBsb25nIGdvKGludCBuLCBpbnQgciwgaW50IHRhcmdldCkgewogIGlmIChuID09IDApIHJldHVybiAodGFyZ2V0ID09IDAgPyAxIDogMCk7CiAgaWYgKGRwW25dW3JdW3RhcmdldF0gPj0gMCkgcmV0dXJuIGRwW25dW3JdW3RhcmdldF07CgogIGludCB3ID0gbi1yOwogIGxvbmcgbG9uZyB3YXlzID0gMDsKICBpZiAociA+IDApIHdheXMgKz0gZ28obi0xLCByLTEsIHRhcmdldCA+IDAgPyB0YXJnZXQtMSA6IDApLCB3YXlzICU9IE07CiAgaWYgKHIgPiAxKSB3YXlzICs9IChyLTEpICogZ28obi0xLCByLTIsIHRhcmdldCksIHdheXMgJT0gTTsKICBpZiAodyA+IDApIHdheXMgKz0gdyAqIGdvKG4tMSwgciA+IDAgPyByLTEgOiAwLCB0YXJnZXQpLCB3YXlzICU9IE07CiAgcmV0dXJuIGRwW25dW3JdW3RhcmdldF0gPSB3YXlzOwp9CgppbnQgbWFpbigpIHsKICBtZW1zZXQoZHAsIDB4ZmYsIHNpemVvZihkcCkpOwogIGludCBuOyBjaW4gPj4gbjsKICB3aGlsZSAobi0tKSB7CiAgICBpbnQgZywgYzsgY2luID4+IGcgPj4gYzsKICAgIGNvdXQgPDwgZ28oZywgZywgYykgPDwgZW5kbDsKICB9CiAgcmV0dXJuIDA7Cn0=
-
upload with new input
-
result: Success time: 0.02s memory: 10776 kB returned value: 0
20 24 3 34 27 51 43 30 8 73 9 70 49 62 39 97 86 93 85 75 35 89 12 15 8 97 57 52 3 17 13 83 4 49 33 88 57 16 9 19 6
654845005 875219463 253211239 141615833 141282623 79967853 80187174 229148997 49429646 173520569 871634493 13402248 203764253 498632674 22917 552088028 20744057 391774960 23541693 389246543



