提出 #54929838
ソースコード 拡げる
#include <stdio.h>
void mul_matrix (long long **a, long long **b, int l, int m, int n, long long **ans, long long mod_num) {
for (int i = 0; i < l; i++) {
for (int j = 0; j < n; j++) {
ans[i][j] = 0LL;
for (int k = 0; k < m; k++) {
ans[i][j] += a[i][k]*b[k][j];
ans[i][j] %= mod_num;
}
}
}
return;
}
long long power_mod (long long a, long long b, long long mod_num) {
long long ans = 1LL;
if (b > 0LL) {
ans = power_mod(a, b/2LL, mod_num);
ans = (ans * ans) % mod_num;
if (b%2LL == 1LL) {
ans = (ans * a) % mod_num;
}
}
return ans;
}
int main () {
int t = 0;
long long n = 0LL;
int res = 0;
long long mod_num = 998244353LL;
long long comb[12][12] = {};
long long s_obj[6][1][13] = {};
long long *s[6][1] = {};
long long s_inv_obj[6][13][1] = {};
long long *s_inv[6][13] = {};
long long cnt[6] = { 2LL, 12LL, 42LL, 112LL, 252LL, 504LL };
long long invf[12] = {};
for (int i = 0; i < 12; i++) {
comb[i][0] = 1LL;
comb[i][i] = 1LL;
for (int j = 1; j < i; j++) {
comb[i][j] = (comb[i-1][j-1]+comb[i-1][j])%mod_num;
}
}
for (int i = 0; i < 6; i++) {
s[i][0] = s_obj[i][0];
for (int j = 0; j < 13; j++) {
s_inv[i][j] = s_inv_obj[i][j];
}
}
for (int i = 0; i < 6; i++) {
s[i][0][0] = 1LL;
for (int j = 1; j < 6+i; j++) {
s[i][0][j] = 0LL;
}
for (int j = 6+i; j < 12; j++) {
s[i][0][j] = comb[j-1][j-i-6];
if ((j-i)%2 == 1) {
s[i][0][j] = mod_num-s[i][0][j];
}
}
s[i][0][12] = 1LL;
for (int j = 0; j < 6+i; j++) {
s_inv[i][j][0] = mod_num-power_mod(2LL, ((long long)(6+i-j))*(mod_num-2LL), mod_num);
for (int k = 0; k < 6-i; k++) {
if (k%2 == 0) {
s_inv[i][j][0] += comb[5+i-j+k][k];
} else {
s_inv[i][j][0] += mod_num-comb[5+i-j+k][k];
}
}
s_inv[i][j][0] %= mod_num;
}
for (int j = 6+i; j < 12; j++) {
s_inv[i][j][0] = mod_num-1LL;
}
s_inv[i][12][0] = power_mod(2LL, ((long long)(6+i))*(mod_num-2LL), mod_num);
}
invf[0] = 1LL;
for (int i = 1; i < 12; i++) {
invf[i] = invf[i-1]*power_mod((long long)i, mod_num-2LL, mod_num);
invf[i] %= mod_num;
}
res = scanf("%d", &t);
while (t > 0) {
res = scanf("%lld", &n);
if (n < 12LL) {
printf("0\n");
} else {
long long ans = 0LL;
long long perm[13] = {};
perm[0] = 1LL;
for (int i = 0; i < 12; i++) {
perm[i+1] = perm[i]*(n-((long long)i));
perm[i+1] %= mod_num;
}
for (int i = 0; i < 6; i++) {
long long wk1_obj[13][13] = {};
long long *wk1[13] = {};
long long wk2_obj[1][13] = {};
long long *wk2[1] = { wk2_obj[0] };
long long wk3_obj[1][1] = {};
long long *wk3[1] = { wk3_obj[0] };
long long tmppow = power_mod(50LL, (n-(long long)(i+5)), mod_num);
for (int j = 0; j < 13; j++) {
wk1[j] = wk1_obj[j];
}
for (int j = i+5; j >= 0; j--) {
long long tmp = (perm[j]*invf[j])%mod_num;
tmp *= tmppow;
tmp %= mod_num;
for (int k = 0; k < i+6-j; k++) {
wk1[k][j+k] = tmp;
}
tmppow *= 50LL;
tmppow %= mod_num;
}
tmppow = power_mod(51LL, (n-(long long)(5-i)), mod_num);
for (int j = 5-i; j >= 0; j--) {
long long tmp = (perm[j]*invf[j])%mod_num;
tmp *= tmppow;
tmp %= mod_num;
for (int k = 0; k < 6-i-j; k++) {
wk1[k+i+6][j+k+i+6] = tmp;
}
tmppow *= 51LL;
tmppow %= mod_num;
}
wk1[12][12] = power_mod(52LL, n, mod_num);
mul_matrix(s[i], wk1, 1, 13, 13, wk2, mod_num);
mul_matrix(wk2, s_inv[i], 1, 13, 1, wk3, mod_num);
ans += cnt[i]*wk3[0][0];
}
printf("%lld\n", ans%mod_num);
}
t--;
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | A - Welcome to NPCAPC |
| ユーザ | chro4896 |
| 言語 | C (gcc 12.2.0) |
| 得点 | 100 |
| コード長 | 4152 Byte |
| 結果 | AC |
| 実行時間 | 42 ms |
| メモリ | 1744 KiB |
ジャッジ結果
| セット名 | Sample | subtask1 | subtask2 | All | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 10 / 10 | 10 / 10 | 80 / 80 | ||||||||
| 結果 |
|
|
|
|
| セット名 | テストケース |
|---|---|
| Sample | example1_00.txt, example2_00.txt |
| subtask1 | example1_00.txt, subtask1_00.txt, 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 |
| subtask2 | example1_00.txt, example2_00.txt, subtask1_00.txt, 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, subtask2_00.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt |
| All | example1_00.txt, example2_00.txt, subtask1_00.txt, 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, subtask2_00.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| example1_00.txt | AC | 1 ms | 1612 KiB |
| example2_00.txt | AC | 1 ms | 1640 KiB |
| subtask1_00.txt | AC | 0 ms | 1624 KiB |
| subtask1_01.txt | AC | 1 ms | 1560 KiB |
| subtask1_02.txt | AC | 0 ms | 1620 KiB |
| subtask1_03.txt | AC | 0 ms | 1620 KiB |
| subtask1_04.txt | AC | 0 ms | 1624 KiB |
| subtask1_05.txt | AC | 1 ms | 1600 KiB |
| subtask1_06.txt | AC | 1 ms | 1628 KiB |
| subtask1_07.txt | AC | 0 ms | 1676 KiB |
| subtask1_08.txt | AC | 1 ms | 1708 KiB |
| subtask1_09.txt | AC | 0 ms | 1608 KiB |
| subtask1_10.txt | AC | 0 ms | 1640 KiB |
| subtask1_11.txt | AC | 0 ms | 1676 KiB |
| subtask1_12.txt | AC | 0 ms | 1584 KiB |
| subtask1_13.txt | AC | 1 ms | 1720 KiB |
| subtask1_14.txt | AC | 0 ms | 1716 KiB |
| subtask1_15.txt | AC | 0 ms | 1512 KiB |
| subtask1_16.txt | AC | 0 ms | 1596 KiB |
| subtask2_00.txt | AC | 1 ms | 1628 KiB |
| subtask2_01.txt | AC | 1 ms | 1580 KiB |
| subtask2_02.txt | AC | 0 ms | 1724 KiB |
| subtask2_03.txt | AC | 1 ms | 1680 KiB |
| subtask2_04.txt | AC | 1 ms | 1632 KiB |
| subtask2_05.txt | AC | 0 ms | 1720 KiB |
| subtask2_06.txt | AC | 1 ms | 1620 KiB |
| subtask2_07.txt | AC | 0 ms | 1620 KiB |
| subtask2_08.txt | AC | 0 ms | 1740 KiB |
| subtask2_09.txt | AC | 1 ms | 1716 KiB |
| subtask2_10.txt | AC | 0 ms | 1744 KiB |
| subtask2_11.txt | AC | 1 ms | 1712 KiB |
| subtask2_12.txt | AC | 1 ms | 1620 KiB |
| subtask2_13.txt | AC | 1 ms | 1712 KiB |
| subtask2_14.txt | AC | 0 ms | 1604 KiB |
| test_00.txt | AC | 39 ms | 1608 KiB |
| test_01.txt | AC | 39 ms | 1616 KiB |
| test_02.txt | AC | 39 ms | 1708 KiB |
| test_03.txt | AC | 39 ms | 1620 KiB |
| test_04.txt | AC | 39 ms | 1576 KiB |
| test_05.txt | AC | 39 ms | 1704 KiB |
| test_06.txt | AC | 39 ms | 1620 KiB |
| test_07.txt | AC | 39 ms | 1708 KiB |
| test_08.txt | AC | 39 ms | 1720 KiB |
| test_09.txt | AC | 39 ms | 1644 KiB |
| test_10.txt | AC | 39 ms | 1628 KiB |
| test_11.txt | AC | 39 ms | 1740 KiB |
| test_12.txt | AC | 39 ms | 1620 KiB |
| test_13.txt | AC | 39 ms | 1628 KiB |
| test_14.txt | AC | 39 ms | 1624 KiB |
| test_15.txt | AC | 39 ms | 1604 KiB |
| test_16.txt | AC | 39 ms | 1620 KiB |
| test_17.txt | AC | 39 ms | 1600 KiB |
| test_18.txt | AC | 39 ms | 1632 KiB |
| test_19.txt | AC | 39 ms | 1708 KiB |
| test_20.txt | AC | 40 ms | 1716 KiB |
| test_21.txt | AC | 39 ms | 1676 KiB |
| test_22.txt | AC | 39 ms | 1584 KiB |
| test_23.txt | AC | 39 ms | 1560 KiB |
| test_24.txt | AC | 39 ms | 1724 KiB |
| test_25.txt | AC | 41 ms | 1728 KiB |
| test_26.txt | AC | 40 ms | 1736 KiB |
| test_27.txt | AC | 40 ms | 1716 KiB |
| test_28.txt | AC | 40 ms | 1580 KiB |
| test_29.txt | AC | 41 ms | 1624 KiB |
| test_30.txt | AC | 41 ms | 1680 KiB |
| test_31.txt | AC | 42 ms | 1640 KiB |
| test_32.txt | AC | 40 ms | 1720 KiB |