目录
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
二、解题报告
1、思路分析
2、复杂度
3、代码详解
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
1575K - Knitting Batik
二、解题报告
1、思路分析
诈骗题,上面的图是什么意思呢?
对于两个矩形如果完全重合,那么情况就是(n * m) ^ k
如果有部分重合,不妨就看上图的情况,黄色部分由于不重合所以可以随便染色
但是!!!由于两个矩形同构,所以黄色部分对应的另一个矩形的红色部分,所以红色部分也确定了,而红色部分在左上角矩形中的部分又对应了右下角矩形的蓝色部分,所以蓝色部分也确定了,而蓝色部分在左上角矩形的部分又对应了右下角矩形的绿色部分,所以我们发现,只要黄色部分确定,两个矩形就全都确定了
所以对于部分重合的情况,我们自由方格的个数就是N * M - R * C
确实不好想而且不太敢想
2、复杂度
时间复杂度: O(log N * M)空间复杂度:O(1)
3、代码详解
N, M, K, R, C = map(int, input().split())
ax, ay, bx, by = map(int, input().split())
if ax == bx and ay == by:
print(pow(K, N * M, 10**9 + 7))
else:
print(pow(K, N * M - R * C, 10**9 + 7))