P12903 [NERC 2020] Digits

题目描述

Diana 喜欢玩数字游戏。她有 $n$ 张卡片,每张卡片上写着一个正整数 $a_i$。她闲暇时会挑选一些卡片,将这些卡片上的数字相乘。 当这些数字的乘积以她最喜欢的数字 $d$ 结尾时,Diana 就会很开心。现在她想知道,应该如何选择卡片才能使得这些数字的乘积尽可能大,并且乘积的十进制表示最后一位是 $d$。请你帮帮她。

输入格式

第一行包含两个整数 $n$ 和 $d$($1 \le n \le 10^5$,$0 \le d \le 9$)。第二行包含 $n$ 个整数 $a_i$($1 \le a_i \le 1000$)。

输出格式

第一行输出选择的卡片数量 $k$($1 \le k \le n$)。第二行以任意顺序输出被选中卡片上的数字。 如果无法选出满足条件的卡片子集(即乘积最后一位是 $d$),则输出一行 $-1$。

说明/提示

在第一个样例中,$1 \times 2 \times 4 \times 11 \times 13 = 1144$,这是以数字 4 结尾的最大乘积。不包含数字 1 的相同卡片组合也是有效答案,包含 8、11 和 13 的组合(无论是否包含 1)同样可以得到乘积 1144。 在第二个样例中,所有卡片上的数字都是偶数,它们的乘积不可能以奇数 1 结尾。 在第三个样例中,所有可能的乘积为 1、3、5、9、15 和 45,它们均不以数字 7 结尾。 在第四个样例中,$9 \times 11 \times 17 = 1683$,其最后一位是 3。 在第五个样例中,$2 \times 2 \times 2 \times 2 = 16$,其最后一位是 6。 翻译由 DeepSeek V3 完成