QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 128 MB Points totaux : 100

#16586. Strange Dream

Statistiques

Dumitru 做了一个非常奇怪的梦:他梦见自己被锁在一个房间里。在房间里,他发现了 $n$ 个盒子,每个盒子里面恰好装有 $m$ 张小牌子,每张牌子上都写着一个大于或等于 $1$ 的整数。他还发现了一张小纸条,上面写着 $2$ 个整数 $k$ 和 $l$,并规定了以下任务:

步骤 1:从第一个盒子中选择一张牌,在笔记本上记录下牌上的数字,将牌上的数字修改为 $1$,然后将牌放回盒子中。随后,以相同的方式,从第二个盒子中选择一张牌,然后从第三个盒子中选择一张,依此类推,直到第 $n$ 个(最后一个)盒子(含),每次从相应的盒子中选择一张牌,在笔记本上记录其数字,将该牌上的数字修改为 $1$,然后将牌放回该盒子中。

步骤 2:在此之后,以相同的方式,从第 $n - 1$ 个盒子中选择一张牌,然后从第 $n - 2$ 个盒子中选择一张,然后从第 $n - 3$ 个盒子中选择一张,依此类推,直到第二个盒子(含),每次从相应的盒子中选择一张牌。

为了打开房门并走出去,Dumitru 需要求出按照上述方案选择牌的不同方式总数 $T$,使得笔记本中记录的数字之积能被 $k$ 整除。由于 $T$ 可能非常大,他需要求出 $T$ 除以 $l$ 的余数。

Dumitru 对这个梦感到非常困惑,因此他试图寻找上述任务的答案。

请编写一个程序来帮助 Dumitru 解决这个任务。

输入格式

输入的第一行包含 $2$ 个整数 $n$ 和 $m$,由单个空格分隔。

第二行包含 $2$ 个整数 $k$ 和 $l$,由单个空格分隔。

接下来的 $n$ 行,每行包含 $m$ 个由单个空格分隔的整数。其中第一行包含在第一个盒子中找到的牌上的 $m$ 个数字,第二行包含在第二个盒子中找到的牌上的数字,依此类推。

输出格式

输出应包含一个整数,即 $T$ 除以 $l$ 的余数。

样例

输入样例 1

3 3
12 100
5 2 1
2 1 2
3 7 4

输出样例 1

12

说明

根据任务中描述的步骤,共有 $12$ 种不同的选牌方式,使得笔记本中记录的数字之积能被 $12$ 整除。所有 $12$ 种方式如下图所示,其中在步骤 1中选择的牌上的数字用单直线标出,在步骤 2中选择的牌上的数字用双直线标出,而在两个步骤中都被选择的牌上的数字用波浪线标出。

12 种不同的选牌方式

如上图所示,图 1 和图 2 展示了 $2$ 种不同的选牌方式,即使在这两种情况下选择的是同一组牌。在图 3 中,第二行的第一张牌在步骤 1步骤 2中都被选中,因此在这种情况下,笔记本中记录的数字之积等于 $2 \times 2 \times 3 \times 1 = 12$。这是因为在步骤 1中选中该牌后,牌上的数字 $2$ 被改写为了 $1$,因此在步骤 2中再次选中它时,记录的数字为 $1$。

数据范围

  • $3 \le n \le 200$
  • $3 \le m \le 10\,000$
  • $2 \le k \le 200\,000$
  • $2 \le l \le 30\,000$

盒子中牌上的数字为 $1$ 到 $1\,000\,000$ 之间的整数(包含边界)。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.