QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#308258#8015. 鸡alpha1022100 ✓0ms3904kbC++141.2kb2024-01-19 19:58:102024-01-19 19:58:10

Judging History

你现在查看的是最新测评结果

  • [2024-01-19 19:58:10]
  • 评测
  • 测评结果:100
  • 用时:0ms
  • 内存:3904kb
  • [2024-01-19 19:58:10]
  • 提交

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]);
}

詳細信息

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"