#L3657. 「2021 集训队互测」挑战分解质因数

    ID: 5455 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数论欧拉函数大整数质因数分解其他概率论随机化

「2021 集训队互测」挑战分解质因数

题目描述

一天,小 Δ\Delta 给你了一张纸,上面写了一个很大的数字 nn,他想让你在一秒钟内对它分解质因数。你定睛一看,发现这个数的二进制有高达 15001500 位,然后你上网搜索了一下,发现连 RSA-1024 都还没有被分解出来,怎么可能一秒分出来呢?

但是突然你发现他在纸的背面也写了一些东西,你又定睛一看发现写的是 φ(n)\varphi(n),也就是 n\leq n 的且与 nn 互质的正整数个数。

这下你好像明白咋分解了。现在你打开了你的电脑,复制出了你的祖传高精度整数运算库,你能一秒钟把结果告诉小 Δ\Delta 吗?

输入格式

一行,两个二进制整数 n,φ(n)n, \varphi(n)

输出格式

如果 nn 可以表示为

[ n = \prod_{i=1}^T p_i ]

其中 pip_i 是质数,且 1i<T, pipi+1\forall 1 \leq i < T,\ p_i \leq p_{i+1},那么首先输出一行,包含一个十进制非负整数 TT,接下来 TT 行,每行一个二进制整数,代表 pip_i。可以证明这样的表示是唯一的。

样例 1

输入

11111101 11011100

输出

2
1011
10111

样例 2

输入

100111001111011011100001110001100101000101110100101001110011110110000001000100110010100010110001000000010011010001 100111001111011011100001101000100100100011111110011100011000100001110110000101101010001010011011100000010000000000

输出

4
1001101000111100011111010111
10010110011110100001101101101
10011111011011010101111010011
101100011110110101010001000001

数据范围与提示

对于所有数据,1n<215001 \leq n < 2^{1500}

本题采用捆绑测试,子任务如下:

条件 分值
n<232n < 2^{32} 5 分
n<264n < 2^{64} 15 分
n<2300n < 2^{300}n=pqn = pq,其中 p,qp, q 为不同的质数 10 分
n<2300n < 2^{300}n=i=1Tpin = \prod_{i=1}^T p_i,其中 pip_i 为两两不同的质数,且 pi3(mod4)p_i \equiv 3 \pmod{4} 15 分
n<2300n < 2^{300}n=i=1Tpin = \prod_{i=1}^T p_i,其中 pip_i 为两两不同的质数
n<2300n < 2^{300} 25 分
无特殊限制 15 分

保证每个子任务不超过 15 个测试点,但子任务之间会设置所有可行的依赖关系。