好矩阵

我们定义一个矩阵为“好矩阵”,当且仅当该矩阵所有2*2的子矩阵数字和为偶数。
例如:

是好矩阵,两个2*2的子矩阵的和分别是8和12。
请问n行m列,矩阵中每个数均在[1,x][1,x]范围内的好矩阵有多少种?由于答案过大,请对109+7取模。

数据范围:2≤n,m,x≤109

保证x为偶数。

输入例子:
2,2,2
输出例子:
8
例子说明:
合法的8个矩阵为:

知识点:组合数学

我们可以先确定第一行和第一列,每个格子上有种不同的取法,共有个格子。因此这些格子的取法总数为。

当第一行和第一***定了以后,其余的格子的奇偶性也就确定下来了。无论是奇数还是偶数,每个格子的取法都是种,因此取法为

把这两个答案乘起来就是最终的答案。

我肯定是想不到了,他们是什么脑子想到的

class Solution {
public:

	int mod = 1e9 + 7;

	/*
	* 封装的快速幂
	*/
	int power(int a, long long b) {
		int res = 1;
		while (b) {
			if (b & 1)res = 1LL * res * a % mod;
			b >>= 1;
			a = 1LL * a * a % mod;
		}
		return res;
	}

    int numsOfGoodMatrix(int n, int m, int x) {
		return 1LL * power(x, n + m - 1) * power(x / 2, 1LL * (n - 1) * (m - 1)) % mod;
    }
};
posted @ 2022-12-23 15:44  YaosGHC  阅读(390)  评论(0)    收藏  举报