Submission #65176821
Source Code Expand
Copy
#include <stdio.h>#include <string.h>#define MOD_BY 998244353int add(int a, int b) {return a + b - MOD_BY * (a + b >= MOD_BY);}int mul(int a, int b) {return (int)((long long)a * b % MOD_BY);}void matmul(int out[49][49], int a[49][49], int b[49][49]) {int i, j, k;memset(out, 0, sizeof(int[49][49]));for (k = 0; k < 49; k++) {for (i = 0; i < 49; i++) {for (j = 0; j < 49; j++) {out[i][j] = add(out[i][j], mul(a[i][k], b[k][j]));}
#include <stdio.h>
#include <string.h>
#define MOD_BY 998244353
int add(int a, int b) {
return a + b - MOD_BY * (a + b >= MOD_BY);
}
int mul(int a, int b) {
return (int)((long long)a * b % MOD_BY);
}
void matmul(int out[49][49], int a[49][49], int b[49][49]) {
int i, j, k;
memset(out, 0, sizeof(int[49][49]));
for (k = 0; k < 49; k++) {
for (i = 0; i < 49; i++) {
for (j = 0; j < 49; j++) {
out[i][j] = add(out[i][j], mul(a[i][k], b[k][j]));
}
}
}
}
int delta[4][256][49][49];
int main(void) {
int i, j;
int T, tc;
for (i = 0; i < 4; i++) {
for (j = 0; j < 49; j++) {
delta[i][0][j][j] = 1;
}
}
for (i = 0; i < 7; i++) {
for (j = 0; j < 7; j++) {
if (i == 6 && j == 6) {
delta[0][1][i * 7 + j][i * 7 + j] = 52;
} else if (i == 6) {
delta[0][1][i * 7 + j][i * 7 + j] = 51;
delta[0][1][i * 7 + j][i * 7 + (j + 1)] = 1;
} else if (j == 6) {
delta[0][1][i * 7 + j][i * 7 + j] = 51;
delta[0][1][i * 7 + j][(i + 1) * 7 + j] = 1;
} else {
delta[0][1][i * 7 + j][i * 7 + j] = 50;
delta[0][1][i * 7 + j][(i + 1) * 7 + j] = 1;
delta[0][1][i * 7 + j][i * 7 + (j + 1)] = 1;
}
}
}
for (i = 2; i < 256; i++) {
matmul(delta[0][i], delta[0][i - 1], delta[0][1]);
}
for (i = 1; i < 4; i++) {
matmul(delta[i][1], delta[i - 1][255], delta[i - 1][1]);
for (j = 2; j < 256; j++) {
matmul(delta[i][j], delta[i][j - 1], delta[i][1]);
}
}
if (scanf("%d", &T) != 1) return 1;
for (tc = 0; tc < T; tc++) {
int buf[3][49][49];
int N;
if (scanf("%d", &N) != 1) return 1;
matmul(buf[0], delta[0][N & 0xff], delta[1][(N >> 8) & 0xff]);
matmul(buf[1], buf[0], delta[2][(N >> 16) & 0xff]);
matmul(buf[2], buf[1], delta[3][(N >> 24) & 0xff]);
printf("%d\n", buf[2][0 * 7 + 0][6 * 7 + 6]);
}
return 0;
}
/*
0 <= m < 6, 0 <= n < 6
[m][n] -> [m + 1][n] x 1, [m][n + 1] x 1, [m][n] x 50
[m][6] -> [m + 1][6] x 1, [m][6] x 51
[6][n] -> [6][n + 1] x 1, [6][n] x 51
[6][6] -> [6][6] x 52
*/
Submission Info
| Submission Time | |
|---|---|
| Task | A - Welcome to NPCAPC |
| User | mikecat |
| Language | C (gcc 12.2.0) |
| Score | 100 |
| Code Size | 2061 Byte |
| Status | AC |
| Exec Time | 2920 ms |
| Memory | 11344 KB |
Judge Result
| Set Name | Sample | subtask1 | subtask2 | All | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 10 / 10 | 10 / 10 | 80 / 80 | ||||||||
| Status |
|
|
|
|
| Set Name | Test Cases |
|---|---|
| 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 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example1_00.txt | AC | 188 ms | 11300 KB |
| example2_00.txt | AC | 187 ms | 11264 KB |
| subtask1_00.txt | AC | 192 ms | 11176 KB |
| subtask1_01.txt | AC | 191 ms | 11168 KB |
| subtask1_02.txt | AC | 192 ms | 11196 KB |
| subtask1_03.txt | AC | 192 ms | 11300 KB |
| subtask1_04.txt | AC | 192 ms | 11296 KB |
| subtask1_05.txt | AC | 192 ms | 11212 KB |
| subtask1_06.txt | AC | 192 ms | 11204 KB |
| subtask1_07.txt | AC | 193 ms | 11176 KB |
| subtask1_08.txt | AC | 191 ms | 11200 KB |
| subtask1_09.txt | AC | 193 ms | 11200 KB |
| subtask1_10.txt | AC | 192 ms | 11200 KB |
| subtask1_11.txt | AC | 192 ms | 11204 KB |
| subtask1_12.txt | AC | 193 ms | 11296 KB |
| subtask1_13.txt | AC | 191 ms | 11344 KB |
| subtask1_14.txt | AC | 193 ms | 11228 KB |
| subtask1_15.txt | AC | 192 ms | 11260 KB |
| subtask1_16.txt | AC | 192 ms | 11316 KB |
| subtask2_00.txt | AC | 193 ms | 11344 KB |
| subtask2_01.txt | AC | 192 ms | 11312 KB |
| subtask2_02.txt | AC | 193 ms | 11296 KB |
| subtask2_03.txt | AC | 192 ms | 11184 KB |
| subtask2_04.txt | AC | 193 ms | 11184 KB |
| subtask2_05.txt | AC | 192 ms | 11172 KB |
| subtask2_06.txt | AC | 192 ms | 11176 KB |
| subtask2_07.txt | AC | 193 ms | 11312 KB |
| subtask2_08.txt | AC | 191 ms | 11208 KB |
| subtask2_09.txt | AC | 192 ms | 11296 KB |
| subtask2_10.txt | AC | 193 ms | 11208 KB |
| subtask2_11.txt | AC | 192 ms | 11204 KB |
| subtask2_12.txt | AC | 193 ms | 11172 KB |
| subtask2_13.txt | AC | 193 ms | 11308 KB |
| subtask2_14.txt | AC | 192 ms | 11260 KB |
| test_00.txt | AC | 2909 ms | 11300 KB |
| test_01.txt | AC | 2911 ms | 11228 KB |
| test_02.txt | AC | 2915 ms | 11260 KB |
| test_03.txt | AC | 2912 ms | 11200 KB |
| test_04.txt | AC | 2913 ms | 11300 KB |
| test_05.txt | AC | 2909 ms | 11296 KB |
| test_06.txt | AC | 2911 ms | 11228 KB |
| test_07.txt | AC | 2910 ms | 11320 KB |
| test_08.txt | AC | 2910 ms | 11260 KB |
| test_09.txt | AC | 2912 ms | 11196 KB |
| test_10.txt | AC | 2907 ms | 11296 KB |
| test_11.txt | AC | 2913 ms | 11260 KB |
| test_12.txt | AC | 2913 ms | 11172 KB |
| test_13.txt | AC | 2914 ms | 11324 KB |
| test_14.txt | AC | 2911 ms | 11176 KB |
| test_15.txt | AC | 2912 ms | 11296 KB |
| test_16.txt | AC | 2913 ms | 11184 KB |
| test_17.txt | AC | 2908 ms | 11296 KB |
| test_18.txt | AC | 2909 ms | 11180 KB |
| test_19.txt | AC | 2910 ms | 11208 KB |
| test_20.txt | AC | 2905 ms | 11308 KB |
| test_21.txt | AC | 2911 ms | 11192 KB |
| test_22.txt | AC | 2914 ms | 11296 KB |
| test_23.txt | AC | 2915 ms | 11328 KB |
| test_24.txt | AC | 2908 ms | 11264 KB |
| test_25.txt | AC | 2908 ms | 11316 KB |
| test_26.txt | AC | 2916 ms | 11260 KB |
| test_27.txt | AC | 2907 ms | 11316 KB |
| test_28.txt | AC | 2920 ms | 11264 KB |
| test_29.txt | AC | 2907 ms | 11204 KB |
| test_30.txt | AC | 2911 ms | 11260 KB |
| test_31.txt | AC | 2911 ms | 11312 KB |
| test_32.txt | AC | 2900 ms | 11260 KB |