F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

地牢谜题:三个怪人

Time Limit: 40000/20000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
Total Submission(s): 24    Accepted Submission(s): 8


Problem Description
好的,现在你身处一个房间内。在你的面前有 $3$ 个宝箱以及 $3$ 个怪人。其中只有一个宝箱是真的宝箱,其他都是假的,你必须一次打开真宝箱。房间里的每个怪人会告诉你以下两种消息之一,但不一定是实话:

- 有 $k\ (1\le k \le 3)$ 个怪人会说实话。

- 真宝箱是第 $i\ (1 \le i \le 3)$ 个宝箱。

这似乎是地牢谜题中最困难的问题之一,因为玩家总是要花时间去考虑究竟谁在说实话。但更为困难的是,作为谜题的设计者,如何设计出合法的谜题。

现在假设有 $n$ 个**不同**的宝箱以及 $m$ 个**相同**的怪人,询问有多少种本质不同的合法谜题。一个谜题合法,当且仅当**只有一个真宝箱作为前提条件**时,玩家能够通过怪人们的话唯一确定真的宝箱。两个谜题本质不同,当且仅当满足下面两个条件之一:

- 存在 $1 \le k \le m$,说"有 $k$ 个怪人会说实话"的怪人数量不同。

- 存在 $1 \le i \le n$,说"真宝箱是第 $i$ 个宝箱"的怪人数量不同。

由于答案可能很大,请输出其对某质数 $P$ 取模的结果。
 

Input
输入第一行包含一个整数 $T$ ($1 \le T \le 10$),表示该组数据的测试点组数。

对于每组测试点,

输入第一行包含三个整数 $n$, $m$, $P$ ($1 \le n,m \le 200$, $10^8 \le P < 10^9$),表示宝箱的数量,怪人的数量,以及取模的质数。
 

Output
对于每组测试点,输出一行一个整数,表示合法谜题的数量对 $P$ 取模的结果。
 

Sample Input
3 2 3 998244353 200 1 998244353 2 1 998244353
 

Sample Output
6 200 0
 

Hint

对于第一组测试点,合法的谜题有:

- 1 个人说第一个宝箱是真的,2 个人说有一个人说实话。这样能够确定第二个宝箱是真的。
- 2 个人说第一个宝箱是真的,1 个人说有两个人说实话。这样能够确定第二个宝箱是真的。
- 1 个人说第一个宝箱是真的,1 个人说有一个人说实话,1 个人说有三个人说实话。这样能够确定第二个宝箱是真的。
- 1个人说第二个宝箱是真的,2 个人说有一个人说实话。这样能够确定第一个宝箱是真的。
- 2个人说第二个宝箱是真的,1 个人说有两个人说实话。这样能够确定第一个宝箱是真的。
- 1个人说第二个宝箱是真的,1 个人说有一个人说实话,1 个人说有三个人说实话。这样能够确定第一个宝箱是真的。



对于第二组测试点,唯一的人一旦指定了真宝箱,那么就可以确定那就是真的宝箱。

对于第三组测试点,即使唯一的人指定了真宝箱,由于存在他在说谎且真宝箱为另一个宝箱的情况,所以不存在合法的谜题。
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-09-20 14:20:24, Gzip enabled