好矩阵

我们定义一个矩阵为“好矩阵”,当且仅当该矩阵所有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;
}
};

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/17000831.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(359)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起