QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#308258 | #8015. 鸡 | alpha1022 | 100 ✓ | 0ms | 3904kb | C++14 | 1.2kb | 2024-01-19 19:58:10 | 2024-01-19 19:58:10 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int mod;
int mpow(int a, int b) {
int ret = 1;
for (; b; b >>= 1) {
if (b & 1) ret = (ll)ret * a % mod;
a = (ll)a * a % mod;
}
return ret;
}
const int table[10][10] = {
{},
{1},
{1, 4, 9, 16, 25},
{1, 6, 17, 36, 65, 106},
{1, 12, 47, 120, 245, 436, 707},
{1, 19, 94, 281, 649, 1281, 2274, 3739},
{1, 35, 227, 803, 2089, 4511, 8595, 14967, 24353},
{1, 58, 477, 1960, 5705, 13506, 27853, 52032, 90225}
};
const int N = 3e3;
int n, m;
int f[N + 5];
int main() {
scanf("%d%d%d", &n, &m, &mod);
for (int i = 2; i <= 7; ++i) {
for (int j = 0; j <= i; ++j) {
int u = table[i][j] % mod, v = 1;
for (int k = 0; k <= i; ++k)
if (j != k) u = (ll)u * (m - k + mod) % mod, v = (ll)v * (j - k + mod) % mod;
f[i] = (f[i] + (ll)u * mpow(v, mod - 2)) % mod;
}
}
for (int i = 8; i <= n; ++i)
f[i] = (f[i - 1] * 2 + 2ll * m * f[i - 2] + (ll)(mod - m * 2 - 2) * f[i - 3]) % mod,
f[i] = (f[i] + ((ll)(m + 2) * (mod - m) + 1) % mod * f[i - 4] + 2ll * m * f[i - 5]) % mod,
f[i] = (f[i] + (ll)m * m * f[i - 6]) % mod;
printf("%d\n", f[n]);
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 5
Accepted
time: 0ms
memory: 3816kb
input:
5 5 1004326439
output:
1281
result:
ok 1 number(s): "1281"
Test #2:
score: 5
Accepted
time: 0ms
memory: 3796kb
input:
5 4 1002682123
output:
649
result:
ok 1 number(s): "649"
Test #3:
score: 5
Accepted
time: 0ms
memory: 3832kb
input:
287 1 1003060133
output:
328406329
result:
ok 1 number(s): "328406329"
Test #4:
score: 5
Accepted
time: 0ms
memory: 3852kb
input:
279 1 1004432189
output:
222258837
result:
ok 1 number(s): "222258837"
Test #5:
score: 5
Accepted
time: 0ms
memory: 3852kb
input:
300 1 1005912203
output:
707086810
result:
ok 1 number(s): "707086810"
Test #6:
score: 5
Accepted
time: 0ms
memory: 3844kb
input:
288 5 1003307827
output:
964512417
result:
ok 1 number(s): "964512417"
Test #7:
score: 5
Accepted
time: 0ms
memory: 3824kb
input:
281 5 1008854383
output:
755282155
result:
ok 1 number(s): "755282155"
Test #8:
score: 5
Accepted
time: 0ms
memory: 3852kb
input:
270 5 1007619367
output:
431828317
result:
ok 1 number(s): "431828317"
Test #9:
score: 5
Accepted
time: 0ms
memory: 3764kb
input:
292 5 1002449813
output:
183613546
result:
ok 1 number(s): "183613546"
Test #10:
score: 5
Accepted
time: 0ms
memory: 3848kb
input:
300 5 1005897091
output:
915308166
result:
ok 1 number(s): "915308166"
Test #11:
score: 5
Accepted
time: 0ms
memory: 3844kb
input:
45 50 1009100993
output:
940158800
result:
ok 1 number(s): "940158800"
Test #12:
score: 5
Accepted
time: 0ms
memory: 3760kb
input:
49 50 1001428049
output:
1045902
result:
ok 1 number(s): "1045902"
Test #13:
score: 5
Accepted
time: 0ms
memory: 3836kb
input:
49 50 1007851073
output:
922264698
result:
ok 1 number(s): "922264698"
Test #14:
score: 5
Accepted
time: 0ms
memory: 3848kb
input:
50 50 1005625571
output:
442192770
result:
ok 1 number(s): "442192770"
Test #15:
score: 5
Accepted
time: 0ms
memory: 3724kb
input:
290 300 1005068699
output:
484359497
result:
ok 1 number(s): "484359497"
Test #16:
score: 5
Accepted
time: 0ms
memory: 3904kb
input:
270 300 1003440637
output:
899894137
result:
ok 1 number(s): "899894137"
Test #17:
score: 5
Accepted
time: 0ms
memory: 3852kb
input:
300 300 1008561979
output:
33407754
result:
ok 1 number(s): "33407754"
Test #18:
score: 5
Accepted
time: 0ms
memory: 3856kb
input:
2991 3000 1004658859
output:
167444547
result:
ok 1 number(s): "167444547"
Test #19:
score: 5
Accepted
time: 0ms
memory: 3728kb
input:
2870 3000 1004054173
output:
860666062
result:
ok 1 number(s): "860666062"
Test #20:
score: 5
Accepted
time: 0ms
memory: 3852kb
input:
3000 3000 1009539589
output:
696222334
result:
ok 1 number(s): "696222334"