提出 #30091431


ソースコード 拡げる

#include <stdio.h>
#include <inttypes.h>
#include <string.h>

#define MOD_BY 1000000007

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

int K;
uint64_t N;

int mat[16][16];

char status[2][4];
void asumikana(int pos) {
	if(pos >= K) {
		int init = 0, result = 0;
		int i;
		for (i = 0; i < K; i++) {
			if (status[0][i] == 2) init |= 1 << i;
			if (status[1][i]) result |= 1 << i;
		}
		mat[init][result]++;
	} else if (status[0][pos]) {
		asumikana(pos + 1);
	} else {
		status[0][pos] = 1;
		status[1][pos] = 1;
		asumikana(pos + 1);
		status[1][pos] = 0;
		if (pos + 1 < K && !status[0][pos + 1]) {
			status[0][pos + 1] = 1;
			asumikana(pos + 2);
			status[0][pos + 1] = 0;
		}
		status[0][pos] = 0;
	}
}

void matmul(int res[16][16], int a[16][16], int b[16][16], int size) {
	static int buf[16][16];
	int i, j, k;
	memset(buf, 0, sizeof(buf));
	for (i = 0; i < size; i++) {
		for (k = 0; k < size; k++) {
			for (j = 0; j < size; j++) {
				buf[i][j] = add(buf[i][j], mul(a[i][k], b[k][j]));
			}
		}
	}
	memcpy(res, buf, sizeof(buf));
}

void matpow(int res[16][16], int a[16][16], int b, int size) {
	static int abuf[16][16];
	static int rbuf[16][16];
	int i;
	memcpy(abuf, a, sizeof(abuf));
	memset(rbuf, 0, sizeof(rbuf));
	for (i = 0; i < size; i++) rbuf[i][i] = 1;
	while (b > 0) {
		if (b & 1) matmul(rbuf, rbuf, abuf, size);
		if (b > 1) matmul(abuf, abuf, abuf, size);
		b >>= 1;
	}
	memcpy(res, rbuf, sizeof(rbuf));
}

int kitamuraeri[16][16];

int main(void) {
	int i, j;
	if (scanf("%d%" SCNu64, &K, &N) != 2) return 1;
	for (i = 0; i < (1 << K); i++) {
		for (j = 0; j < K; j++) {
			status[0][j] = ((i >> j) & 1) * 2;
		}
		asumikana(0);
	}
	matpow(kitamuraeri, mat, N, 1 << K);
	printf("%d\n", kitamuraeri[0][0]);
	return 0;
}

提出情報

提出日時
問題 057 - Domino Tiling
ユーザ mikecat
言語 C (GCC 9.2.1)
得点 0
コード長 1930 Byte
結果 WA
実行時間 6 ms
メモリ 1676 KiB

ジャッジ結果

セット名 Sample k_2 k_3 k_4 All
得点 / 配点 0 / 0 0 / 2 0 / 30 0 / 400 0 / 568
結果
AC × 3
AC × 2
WA × 19
AC × 5
WA × 16
AC × 2
WA × 19
AC × 9
WA × 54
セット名 テストケース
Sample sample_k_2.txt, sample_k_3.txt, sample_k_4.txt
k_2 k_2_01.txt, k_2_02.txt, k_2_03.txt, k_2_04.txt, k_2_05.txt, k_2_06.txt, k_2_07.txt, k_2_08.txt, k_2_09.txt, k_2_10.txt, k_2_11.txt, k_2_12.txt, k_2_13.txt, k_2_14.txt, k_2_15.txt, k_2_16.txt, k_2_17.txt, k_2_18.txt, k_2_19.txt, k_2_20.txt, sample_k_2.txt
k_3 k_3_01.txt, k_3_02.txt, k_3_03.txt, k_3_04.txt, k_3_05.txt, k_3_06.txt, k_3_07.txt, k_3_08.txt, k_3_09.txt, k_3_10.txt, k_3_11.txt, k_3_12.txt, k_3_13.txt, k_3_14.txt, k_3_15.txt, k_3_16.txt, k_3_17.txt, k_3_18.txt, k_3_19.txt, k_3_20.txt, sample_k_3.txt
k_4 k_4_01.txt, k_4_02.txt, k_4_03.txt, k_4_04.txt, k_4_05.txt, k_4_06.txt, k_4_07.txt, k_4_08.txt, k_4_09.txt, k_4_10.txt, k_4_11.txt, k_4_12.txt, k_4_13.txt, k_4_14.txt, k_4_15.txt, k_4_16.txt, k_4_17.txt, k_4_18.txt, k_4_19.txt, k_4_20.txt, sample_k_4.txt
All k_2_01.txt, k_2_02.txt, k_2_03.txt, k_2_04.txt, k_2_05.txt, k_2_06.txt, k_2_07.txt, k_2_08.txt, k_2_09.txt, k_2_10.txt, k_2_11.txt, k_2_12.txt, k_2_13.txt, k_2_14.txt, k_2_15.txt, k_2_16.txt, k_2_17.txt, k_2_18.txt, k_2_19.txt, k_2_20.txt, k_3_01.txt, k_3_02.txt, k_3_03.txt, k_3_04.txt, k_3_05.txt, k_3_06.txt, k_3_07.txt, k_3_08.txt, k_3_09.txt, k_3_10.txt, k_3_11.txt, k_3_12.txt, k_3_13.txt, k_3_14.txt, k_3_15.txt, k_3_16.txt, k_3_17.txt, k_3_18.txt, k_3_19.txt, k_3_20.txt, k_4_01.txt, k_4_02.txt, k_4_03.txt, k_4_04.txt, k_4_05.txt, k_4_06.txt, k_4_07.txt, k_4_08.txt, k_4_09.txt, k_4_10.txt, k_4_11.txt, k_4_12.txt, k_4_13.txt, k_4_14.txt, k_4_15.txt, k_4_16.txt, k_4_17.txt, k_4_18.txt, k_4_19.txt, k_4_20.txt, sample_k_2.txt, sample_k_3.txt, sample_k_4.txt
ケース名 結果 実行時間 メモリ
k_2_01.txt AC 6 ms 1668 KiB
k_2_02.txt WA 1 ms 1608 KiB
k_2_03.txt WA 1 ms 1672 KiB
k_2_04.txt WA 1 ms 1604 KiB
k_2_05.txt WA 2 ms 1612 KiB
k_2_06.txt WA 1 ms 1672 KiB
k_2_07.txt WA 1 ms 1608 KiB
k_2_08.txt WA 2 ms 1608 KiB
k_2_09.txt WA 1 ms 1604 KiB
k_2_10.txt WA 1 ms 1592 KiB
k_2_11.txt WA 1 ms 1604 KiB
k_2_12.txt WA 1 ms 1672 KiB
k_2_13.txt WA 1 ms 1612 KiB
k_2_14.txt WA 2 ms 1592 KiB
k_2_15.txt WA 1 ms 1592 KiB
k_2_16.txt WA 1 ms 1612 KiB
k_2_17.txt WA 3 ms 1592 KiB
k_2_18.txt WA 1 ms 1676 KiB
k_2_19.txt WA 2 ms 1608 KiB
k_2_20.txt WA 1 ms 1668 KiB
k_3_01.txt AC 2 ms 1612 KiB
k_3_02.txt AC 1 ms 1592 KiB
k_3_03.txt AC 1 ms 1612 KiB
k_3_04.txt WA 1 ms 1592 KiB
k_3_05.txt WA 1 ms 1588 KiB
k_3_06.txt WA 1 ms 1612 KiB
k_3_07.txt WA 2 ms 1608 KiB
k_3_08.txt WA 1 ms 1588 KiB
k_3_09.txt WA 1 ms 1608 KiB
k_3_10.txt WA 3 ms 1616 KiB
k_3_11.txt WA 1 ms 1600 KiB
k_3_12.txt WA 1 ms 1672 KiB
k_3_13.txt WA 1 ms 1668 KiB
k_3_14.txt WA 2 ms 1672 KiB
k_3_15.txt WA 1 ms 1608 KiB
k_3_16.txt WA 1 ms 1668 KiB
k_3_17.txt WA 1 ms 1612 KiB
k_3_18.txt WA 1 ms 1604 KiB
k_3_19.txt AC 3 ms 1604 KiB
k_3_20.txt WA 1 ms 1608 KiB
k_4_01.txt AC 2 ms 1592 KiB
k_4_02.txt WA 2 ms 1672 KiB
k_4_03.txt WA 1 ms 1612 KiB
k_4_04.txt WA 1 ms 1676 KiB
k_4_05.txt WA 2 ms 1592 KiB
k_4_06.txt WA 1 ms 1588 KiB
k_4_07.txt WA 3 ms 1604 KiB
k_4_08.txt WA 2 ms 1608 KiB
k_4_09.txt WA 2 ms 1672 KiB
k_4_10.txt WA 2 ms 1612 KiB
k_4_11.txt WA 2 ms 1668 KiB
k_4_12.txt WA 2 ms 1608 KiB
k_4_13.txt WA 1 ms 1668 KiB
k_4_14.txt WA 2 ms 1592 KiB
k_4_15.txt WA 2 ms 1600 KiB
k_4_16.txt WA 1 ms 1596 KiB
k_4_17.txt WA 1 ms 1668 KiB
k_4_18.txt WA 2 ms 1596 KiB
k_4_19.txt WA 2 ms 1592 KiB
k_4_20.txt WA 2 ms 1608 KiB
sample_k_2.txt AC 2 ms 1596 KiB
sample_k_3.txt AC 1 ms 1588 KiB
sample_k_4.txt AC 1 ms 1592 KiB