UVA550 Multiplying by Rotation

题目描述

# 旋转乘法 给定三个整数 `a`、`b` 和 `n`,以及三个矩阵 `A`、`B` 和 `C` 的尺寸(行数和列数)。矩阵 `A` 的尺寸是 `a x b`,矩阵 `B` 的尺寸是 `b x n`,矩阵 `C` 的尺寸是 `a x n`。 矩阵 `A` 和 `B` 可以进行矩阵乘法得到一个新的矩阵 `D`,其尺寸是 `a x n`。如果 `D` 的每个元素都恰好是 `C` 中对应位置元素的整数倍,则称 `C` 是 `A` 和 `B` 的旋转乘积。 你需要编写一个程序,判断给定的矩阵 `C` 是否是 `A` 和 `B` 的旋转乘积。

输入格式

输入的第一行包含三个整数 `a`、`b` 和 `n`,分别表示矩阵 `A`、`B` 和 `C` 的尺寸。 接下来是矩阵 `A` 的元素,按行优先顺序排列。 然后是矩阵 `B` 的元素,同样按行优先顺序排列。 最后是矩阵 `C` 的元素,也按行优先顺序排列。 输入以 EOF(文件结束符)结束。

输出格式

对于每组输入,如果 `C` 是 `A` 和 `B` 的旋转乘积,输出 `YES`;否则输出 `NO`。 ## 样例 #1 ### 样例输入 #1 ``` 10 7 4 (A的元素,按行优先顺序排列) (B的元素,按行优先顺序排列) (C的元素,按行优先顺序排列) ``` ### 样例输出 #1 ``` YES NO YES ``` ### 翻译解释 这个题目要求我们判断给定的矩阵 `C` 是否可以通过矩阵 `A` 和 `B` 的乘法(即 `A * B`)经过某些元素的整数倍变换得到。也就是说,如果 `D = A * B`,且对于 `D` 中的每个元素 `d_ij` 和 `C` 中的对应元素 `c_ij`,存在整数 `k` 使得 `d_ij = k * c_ij`,则称 `C` 是 `A` 和 `B` 的旋转乘积。 在样例输入中,每组数据包括三个矩阵的尺寸和三个矩阵的元素。程序需要判断每组数据中的 `C` 是否是 `A` 和 `B` 的旋转乘积,并输出对应的结果。在样例输出中,`YES` 表示是旋转乘积,`NO` 表示不是。 注意:题目中并没有给出具体的矩阵元素,而是用 `(A的元素,按行优先顺序排列)`、`(B的元素,按行优先顺序排列)` 和 `(C的元素,按行优先顺序排列)` 来表示。在实际编程时,你需要读取这些元素并进行相应的计算。