本题要求用“只包含 1 和合数”的数组凑出给定整数 n,并使数组长度最短(长度至少为 2)。 做法属于构造 + 数论 + 贪心:为了最短,优先尝试用 2 个数完成(因为长度不能为 1)。若不能,再用 3 个或更多。
关键观察(合数定义:大于 1 且有除 1 和自身外的正因子):
给定一个正整数 n 。请你找到一个长度至少为 2 的数组 a ,使得数组 a 中仅含 1 和合数(可以只包含 1,可以只包含合数,也可以同时有合数和 1 ),且 a 中所有元素的和为 n 。如果有多个满足条件的 a ,请输出长度最短的。如果有多个长度最短的 a ,你可以输出任意一个。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
【名词解释】
合数:大于 1 的正整数,且有除 1 和自身外的正因子。
每个测试文件均包含多组测试数据。第一行输入一个整数 T(1≤T≤103) 代表数据组数,每组测试数据描述如下:
输入一行一个正整数 n(2≤n≤1018) 。
对于每组测试数据,先输出一行一个正整数 k ,表示 a 的长度。在第二行输出 k 个整数,表示 a 中的元素。如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
输入
3
8
10
2
输出
2
4 4
2
1 9
2
1 1