#P2501. 【中国电信】2025-9-15-第一题-分零食

【中国电信】2025-9-15-第一题-分零食

题目描述

AKAK 和他的弟弟买了nn种不同的零食(编号从11开始),每种零食各一个。

给定整数mm以及价格表[a1,a2..,an][a_1,a_2,..,a_n],其中a1=ma_1=m且对任意2in2\le i\le nai=ai1×ma_i=a_{i-1}\times m。编号为ii的零食价格为aia_i

现在需要把全部零食在两人之间分配(每件零食必须属于其中一人)。

AKAK作为哥哥,希望自己拿到的零食总价格不超过弟弟零食的总价格;在满足上述条件下,AKAK为了照顾弟弟的自尊心希望两人的总价格差

尽可能小。请输出AKAK最终拿到的零食编号(编号顺序任意)。

如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。

注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

输入描述

每个测试文件均包含多组测试数据。第一行输入一个整数T(1T104)T(1\le T\le 10^4)代表数据组数,每组测试数据描述如下:

在一行上输入两个整数,使用变量n,m(1n2×105,1m109)n,m (1\le n\le 2\times 10^5,1\le m\le 10^9)指代,分别表示零食种类数与价格倍率。

除此之外,保证单个测试文件的nn之和不超过2×1052\times 10^5

输出描述

对于每一组测试数据,新起一行输出:

第一行输出一个整数kk,表示AKAK拿到的零食个数;

第二行输出kk个整数,要求两两不同,表示AKAK拿到的零食编号(顺序任意)。

k=0k=0时,第二行留空。

样例

输入

2
1 2 
5 1

输出

0

2
1 2

样例解释

n=1,m=2n=1,m=2时,价格为22,若AKAK拿走它将违反不超过条件,因此k=0k=0

n=5,m=1n=5,m=1时,价格全为11,选取编号1,21,2得到22的价格,弟弟得到剩余33的价格,可以证明不存在更优的方案。