P13243 [GCJ 2014 Qualification] Magic Trick
题目背景
**注意:** 要晋级下一轮,你需要获得 25 分。仅解决本题无法获得足够的分数。
题目描述
最近你去看了一场魔术表演。你对其中的一个戏法印象深刻,因此你决定尝试揭开其中的秘密!
魔术师首先将 $16$ 张牌摆成一个正方形:共 $4$ 行,每行 $4$ 张牌。每张牌正面都写有 $1$ 到 $16$ 中的一个不同的数字。接着,魔术师请一位观众选择一张牌,并告诉他这张牌所在的行号。
然后,魔术师可能以不同的顺序再次将 $16$ 张牌摆成一个正方形。魔术师再次询问观众她的牌现在在第几行。仅凭观众对这两个问题的回答,魔术师就能准确地说出观众选的是哪张牌。不可思议,对吧?
你决定写一个程序来帮助你理解魔术师的技巧。程序将获得两次牌面布局,以及观众对于两个问题的回答:第一次布局所选牌的行号,以及第二次布局所选牌的行号。行号从上到下编号为 $1$ 到 $4$。
你的程序应当判断观众选的是哪张牌;或者如果有多种可能的牌(即魔术师失误),输出“Bad magician!”;或者如果没有任何牌符合观众的答案(即观众作弊),输出“Volunteer cheated!”。
输入格式
输入的第一行包含一个整数 $\mathbf{T}$,表示测试用例数。接下来有 $\mathbf{T}$ 组测试用例。每组测试用例的第一行为一个整数,表示第一次提问的答案。接下来的 $4$ 行为第一次的牌面布局,每行 $4$ 个整数,空格分隔。再下一行为第二次提问的答案,接着的 $4$ 行为第二次的牌面布局,格式同上。
输出格式
对于每组测试用例,输出一行 "Case #$x$: $y$",其中 $x$ 为测试用例编号(从 $1$ 开始)。
- 如果只有一张牌符合观众的选择,$y$ 应为该牌上的数字。
- 如果有多张牌符合观众的选择,$y$ 应为 "Bad magician!"(不含引号)。
- 如果没有任何牌符合观众的答案,$y$ 应为 "Volunteer cheated!"(不含引号)。
- 输出内容必须完全一致,建议直接复制粘贴上述文本。
说明/提示
**数据范围(6 分)**
- $1 \leq T \leq 100$。
- $1 \leq$ 两次回答 $\leq 4$。
- $1$ 到 $16$ 的每个数字在每次布局中恰好出现一次。
翻译由 GPT4.1 完成。