SP1788 FRACTAN - Fractan

题目描述

给你一个分数列表 `f_1, f_2, ..., f_k` 和一个起始整数 `N`,你需要玩一个“分数游戏”。在这个游戏中,每次你需要将当前整数(初始为 `N`)乘以列表中最早的一个能使结果为整数的分数 `f_i`。如果这样的 `f_i` 不存在,游戏就结束。 具体操作是这样的:我们定义一个序列 `S_0 = N`,随后 `S_{j+1} = f_i \times S_j`,其中 `1 ≤ i ≤ k`,要求 `f_i \times S_j` 是整数,而 `f_1 \times S_j, ..., f_{i-1} \times S_j` 都不是整数。 举个例子,假如我们有八个分数 `f_1 = 170/39`, `f_2 = 19/13`, `f_3 = 13/17`, `f_4 = 69/95`, `f_5 = 19/23`, `f_6 = 1/19`, `f_7 = 13/7`, `f_8 = 1/3`,并从 `N=21` 开始。我们会生成一个有限的序列:`(21, 39, 170, 130, 190, 138, 114, 6, 2)`。一般情况下,这个序列可能是无限的。 你需要根据给定的分数列表和起始整数,计算出序列的一部分。具体来说,我们只关注序列中出现的 `2` 的幂。

输入格式

输入包含多组测试数据。对每组数据,第一行有两个整数 `k` 和 `N`,分别表示分数列表的长度和起始整数。接下来的 `k` 行中,每行包含两个正整数 `a` 和 `b`,表示一个分数 `a/b`。

输出格式

对于每组测试数据,输出一行,包含序列中所有出现的 `2` 的幂,按从小到大的顺序排列。如果序列中没有出现 `2` 的幂,则输出 `0`。

说明/提示

- `1 ≤ k ≤ 100` - `1 ≤ N ≤ 10^6` - `1 ≤ a, b ≤ 10^6` **本翻译由 AI 自动生成**