#P1847. 2024.7.20-KDXF-第三题-数字拆分问题

2024.7.20-KDXF-第三题-数字拆分问题

问题描述

众所周知,任何一个数 nn 可以拆分为若干项,这些项是不同的,由 22 的次幂和 33 的次幂相乘之和组成,即:

n=i=1m(2ai3bi)n = \sum_{i=1}^{m} (2^{a_i} \cdot 3^{b_i})

且对于所有 iijj ,满足 2ai3bi2aj3bj2^{a_i}3^{b_i} \neq 2^{a_j}3^{b_j}

塔子哥给你这个整数 nn,希望你能找到这样两个长度为 mm 的序列 AABB 满足给出的方程(2a13b1,2a23b2,...,2am3bm2^{a_1}3^{b_1},2^{a_2}3^{b_2},...,2^{a_m}3^{b_m}),并且按照由大到小的顺序依次输出。

输入描述

每个测试文件均包含多组测试数据。第一行输入一个整数 TT1<T<1001 < T < 100),代表数据组数。每组测试数据描述如下:在一行上输入一个整数 nn1n1091 \leq n \leq 10^9),代表给定的初始数字。

输出描述

对于每一组测试数据,第一行输出一个整数 mm1m<1091 \leq m < 10^9),代表序列的项数。第二行输出 mm 个不同的整数 2a13b1,2a23b2,...,2am3bm2^{a_1}3^{b_1},2^{a_2}3^{b_2},...,2^{a_m}3^{b_m},代表拆出的序列,并由大到小依次输出。

样例输入

5
10
15
123
3
321

样例输出

2
8 2
2
12 3
3
96 24 3
1
3
4
288 24 6 3

样例解释

  1. 对于 n=10n = 10,可以拆分为 8+28 + 2,其中 8=23308 = 2^3 \cdot 3^02=21302 = 2^1 \cdot 3^0
  2. 对于 n=15n = 15,可以拆分为 12+312 + 3,其中 12=223112 = 2^2 \cdot 3^13=20313 = 2^0 \cdot 3^1
  3. 对于 n=123n = 123,可以拆分为 96+24+396 + 24 + 3,其中 96=253196 = 2^5 \cdot 3^124=233124 = 2^3 \cdot 3^13=20313 = 2^0 \cdot 3^1
  4. 对于 n=3n = 3,可以直接表示为 3=20313 = 2^0 \cdot 3^1
  5. 对于 n=321n = 321,可以拆分为 288+24+6+3288 + 24 + 6 + 3,其中 288=2532288 = 2^5 \cdot 3^224=233124 = 2^3 \cdot 3^16=21316 = 2^1 \cdot 3^13=20313 = 2^0 \cdot 3^1