一天,小 Δ 给你了一个张纸,上面写了一个很大的数字 n ,他想让你在一秒钟内对它分解质因数,你定睛一看,发现这个数的二进制有高达 1500 位,然后你上网搜索了一下,发现连 RSA-1024 都还没有被分解出来,怎么可能一秒分出来呢?
但是突然你发现他在纸的背面也写了一些东西,你又定睛一看发现写的是 φ(n),也就是 ≤n 的且与 n 互质的正整数个数。
这下你好像明白咋分解了,现在你打开了你的电脑,复制出了你的祖传高精度整数运算库,你能一秒钟把结果告诉小 Δ 吗?
输入格式
一行,两个二进制整数 n,φ(n)。
输出格式
如果 n 可以表示为 n=∏Ti=1pi,其中 pi 是质数,且 ∀1≤i<T,pi≤pi+1,那么首先输出一行,包含一个十进制非负整数 T,接下来 T 行,每行一个二进制整数,代表 pi,可以证明这样的表示是唯一的。
样例数据
样例 1 输入
11111101 11011100
样例 1 输出
2
1011
10111
样例 2
见下发文件。
子任务
对于所有数据, 1≤n<21500。
本题采用捆绑测试,子任务如下:
- n<232 (5分)
- n<264 (15分)
- n<2300,n=pq,其中 p,q 为不同的质数 (10分)
- n<2300,n=∏Ti=1pi,其中 pi 为两两不同的质数,且 p_i\equiv 3\pmod{4} (15分)
- n< 2^{300},n=\prod_{i=1}^T p_i,其中 p_i 为两两不同的质数 (15分)
- n< 2^{300} (25分)
- 无特殊限制 (15分)
保证每个子任务不超过15个测试点,但子任务之间会设置所有可行的依赖关系。
高精度库
我们在下发文件中提供了题面中提到的“祖传高精度整数运算库”,可以详见下发文件中的文档。