小 Z 刚刚学习了二进制!二进制数是用 $$$0$$$ 和 $$$1$$$ 两个数码来表示的数。它的基数为 $$$2$$$,进位规则是"逢二进一",借位规则是"借一当二"。对于一个长度为 $$$m$$$ 的二进制串,其可以表示 $$$[0\sim 2^m)$$$ 的值。聪慧的小 Z 很快引申到了 $$$n$$$ 进制数,她意识到,对于任意大于 $$$1$$$ 的正整数 $$$n$$$,一个长度为 $$$m$$$ 的 $$$n$$$ 进制数可以表示所有 $$$[0\sim n^m)$$$ 的值。但小 Z 并不满足于正整数,她还想知道某种特殊定义下的 $$$a/b$$$ 进制下的情况......
小 Z 的问题形式化地表示如下,给出一个正数 $$$n$$$ (其中 $$$n$$$ 以 $$$x = n \times b^m$$$ 的形式给出,$$$x$$$ 是一个不超过 $$$10^{18}$$$ 的正整数)、正整数 $$$m,a,b$$$ 和一个长度为 $$$m+1$$$ 的序列 $$$c_i$$$(下标从 $$$0$$$ 开始),问是否能选出一个长度为 $$$k$$$ 的非空整数序列 $$$s$$$,满足 $$$0\le s_1 \lt s_2 \lt \cdots \lt s_k \le m$$$,使得 $$$n = \sum_{i=1}^k c_{s_i} \times (\frac{a}{b})^{s_i}$$$。在有解的情况下,小 Z 还希望这个序列的长度 $$$k$$$ 尽量小,并想知道在满足 $$$k$$$ 最小情况下的方案数,以及其中任意一种方案。若无解的话,只要告诉小 Z 一行一个 $$$-1$$$ 表示无解即可。
小 Z 觉得 $$$a=b$$$ 非常的简单,所以她保证了 $$$a \ne b$$$;但是她又觉得这道题非常的困难,所以她又保证了对于任意 $$$c_i$$$,$$$c_i$$$ 与 $$$a$$$、$$$b$$$ 同时互质。小 Z 认为大部分选手会使用 C++ 作答,所以她还贴心的保证了对于任意 $$$i (0\le i\le m),c_i \times a_i^i \cdot b_i^{m-i} \le 10^{18}$$$。
本题有多组测试数据。
输入的第一行为一个正整数 $$$T$$$($$$1\le T\le 50000$$$),表示数据组数。每组数据共有两行输入。
每组数据的第一行包含四个用空格分隔正整数 $$$x,m,a,b$$$($$$1\le x,a,b \le 10^{18}$$$;$$$1\le m\le 60$$$;$$$a\ne b$$$),含义如上文所述;
第二行包含 $$$m+1$$$ 个用空格分隔正整数 $$$c_0, c_1, \cdots , c_m$$$,含义如上文所述。
对于每组数据,若不存在这样的序列 $$$s$$$,则输出一行一个 $$$-1$$$;
若有解,则第一行输出两个用空格分隔的整数 $$$k$$$ 和 $$$num$$$,分别表示使序列 $$$s$$$ 长度最短的长度 $$$k$$$ 和方案数 $$$num$$$;第二行输出一个长度为 $$$m+1$$$ 的 $$$01$$$ 串,表示其中一种合法方案,其中第 $$$i$$$ 个数为 $$$1$$$ 则表示数字 $$$i - 1$$$ 在序列 $$$s$$$ 中;若为 $$$0$$$ 则表示不在。
若有多种合法方案,输出其中任意一种即可。
3 104 3 2 4 1 1 3 3 130 1 65 143 1 2 97 3 4 6 1 1 1 1
3 1 0111 1 1 01 -1
| Название |
|---|


