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的元素,按行优先顺序排列)` 来表示。在实际编程时,你需要读取这些元素并进行相应的计算。