#P1783. Fractran
Fractran
分数游戏问题描述
游戏规则 给定一组分数 和起始整数 ,游戏按以下步骤进行:
- 初始值设为
- 在每一步,用当前值 乘以分数列表中第一个能使其结果为整数的分数 ,得到
- 当没有分数能产生整数结果时,游戏终止
数学表达式为:
$$S_{j+1} = f_i \times S_j \quad \text{当且仅当} \quad f_i \times S_j \in \mathbb{Z} \ \text{且} \ \forall_{l < i} \ f_l \times S_j \notin \mathbb{Z} $$示例 给定分数列表: $\frac{170}{39}, \frac{19}{13}, \frac{13}{17}, \frac{69}{95}, \frac{19}{23}, \frac{1}{19}, \frac{13}{7}, \frac{1}{3}$
从 开始,生成的序列为:
问题要求 对于每组测试数据,找出序列中前 个形如 的数字,并输出它们的指数 。
输入格式 每组测试数据包含:
- 三个整数 , , (,,)
- 个分数,每个分数以分子、分母形式给出(均为小于1000的正整数且互质)
- 输入以一行单独的0结束
输出格式 对每组测试数据,输出一行 个整数,表示前 个2的幂次数的指数。
输入样例
1 21 8 170 39 19 13 13 17 69 95 19 23 1 19 13 7 1 3
20 2 14 17 91 78 85 19 51 23 38 29 33 77 29 95 23 77 19 1 17 11 13 13 11 15 2 1 7 55 1
0
输出样例
1
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67
来源 Ulm Local 2004