问题 5237 --乘法破译(multiplication)5237: 乘法破译(multiplication)
时间限制: 10 Sec 内存限制: 256 MB
提交: 6 解决: 5
[提交][状态][命题人:]题目描述
你获得了一张加密的 p 进制下的乘法表,每个字母代表了一个0 ∼ p−1 之间的不同的整数。下面是一个 p = 4 的例子。
× | A B C D
-------------------
A | CD BB DC BA
B | BB BB BB BB
C | DC BB DB BC
D | BA BB BC BD
这里的 CD 表示 p 进制下的数字,实际上也就是 C⋅p+D 。上面的乘法表中,我们带入 A = 3, B = 0, C = 2, D = 1 就成立。
现在给你加密的乘法表,希望你能找到每个字符表示的数。
输入
第一行,一个整数 p 。
接下来 p 行,每行 2p 个整数。第 i 行的 2j − 1 和 2j 个数表示 i 这个字符和 j 这个字符的乘积的高位和低位。这里我们用数字 0 ∼ p−1 表示字符第 1 到 p 个字符。也就可以认为样例中的 0,1,2,3 分别表示 ABCD。
输出
输出一行,一共 p 个数字,分别表示数字 0 到 p−1 对应的数字是什么。可以证明,在题目限制下,一定存在唯一解。
提示
样例解释
这个样例,和题面中的乘法表一样。
数据规模
共 10 组数据,
测试点 1,2,3 满足,p ≤ 10。
测试点 4,5 满足,p ≤ 50。
测试点 6,7 满足,p ≤ 500。
对于 100% 的数据,满足 3 ≤ p ≤ 2000,保证乘法表一定合法。
来源
[提交][状态]