Problem - 2 - Codeforces构造一个数字和他的因子 使得等于n个因子之和数字对于一个数字x 他的所有因子一定都整除他 那么就可以表示为 x/ai当n1 显然选择一个数字和他本身即可当n2 肯定不能选择1 和他本身 那么最小的因数就是2 不可能存在两个不同的因数使得因数之和等于 n当n3 如果存在这样的数字 那么等式就可以写成 xx/a1 x/a2 x/a3 …… x/an也就是1 1/ai 2/ai 3/ai.......那么x就是这群ai的最小公倍数 那么要让这个最小公倍数好构造 我们可以直接拆211/2 1/4 1/8.. 最后会有两个相同的数字 1/2^(n-3) 我们可以把他拆成三个数字 1/2^(n-3)*1/21/31/6 最后构造出来的数字就是3*2^(n-2);代码如下#include bits/stdc.h using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cinn; if(n1){ cout1\n; cout1\n; }else if(n2)cout-1\n; else { cout(3(n-2))\n; cout1 2; for(int i0;in-2;i){ cout (3i); } } return 0; }