#G0118. 构造前缀gcd【2025暑假集训T4】

构造前缀gcd【2025暑假集训T4】

题目描述

对于一个长度为 nn 的数组 {a1,a2,,an}\{a_1,a_2,\dots,a_n\},江桥先定义 $f\left(i \right)=\gcd\left(a_1,a_2,\dots,a_i \right)^\texttt{[1]}$,基于此,再定义数组的权值为:j=1nf(j)\sum\limits_{j = 1}^{n}{f(j)}

现在,七萤想让江桥构造一个长为 nn 且所有元素都在 [1,m]\left[ 1,m \right] 之内的数组,满足其权值恰好为 xx。 请你帮帮江桥。

【名词解释】

gcd[1]\gcd^\texttt{[1]}:即最大公因数,指多个整数共有因数中最大的一个。例如,12,1812,183030 的公因数有 1,2,3,61,2,3,6,其中最大的因数是 66,因此 gcd(12,18,30)=6\gcd(12,18,30)=6。特别地,定义 gcd(x)=x\gcd(x)=x

输入格式

每个测试文件均包含多组测试数据。第一行输入一个整数 TT 代表数据组数,每组测试数据描述如下:

第一行输入三个正整数 n,m,xn,m,x

输出格式

对于每一组测试数据,新起一行。如果不存在满足条件的数组,直接输出 −1;否则,在一行上输出 nn 个整数,代表所构造的数组。如果存在多个解决方案,您可以输出任意一个。

1
5 4 6
2 1 1 1 1
1
5 5 4
-1

样例解释

在这个样例中:

f(1)=gcd(a1)=2f(1) = \gcd(a_1) = 2

f(2)=gcd(a1,a2)=1f(2) = \gcd(a_1,a_2) = 1

f(3)=gcd(a1,a2,a3)=1f(3) = \gcd(a_1,a_2,a_3) = 1

f(4)=gcd(a1,a2,a3,a4)=1f(4) = \gcd(a_1,a_2,a_3,a_4) = 1

f(5)=gcd(a1,a2,a3,a4,a5)=1f(5) = \gcd(a_1,a_2,a_3,a_4,a_5) = 1

数据规模与约定

下发文件

下发文件对应子任务 1,51,5

有合理的子任务依赖。

子任务编号 n,m\sum n,\sum m≤ 分值
11 77 1010
22 88
33 2020 2020
44 4040
55 5050 4040

对于 100%100\% 的数据:保证 $1 \leq T \leq 10,1 \leq n,m,\sum n,\sum m \leq 50, 1 \leq x \leq n \times m$。