小 L 有 n 张数字卡片,第 i 张卡片上写着一个正整数 ai。这些整数在十进制下每一位都不为 0。
小 L 想进行一次拆分与重组:首先,将所有卡片上的数字的每一位单独拆下,得到一堆数字积木(每块积木上写着一个 1 到 9 的数字)。然后,他需要把这些积木全部用上,为每一张卡片重新拼出一个新的整数。重新拼出的第 i 个整数的位数必须等于原来 ai 的位数。
小 L 的目标是让全部新拼出的整数之和尽可能大。请问他能达到的最大总和是多少?
小 L 有 n 张数字卡片,第 i 张卡片上写着一个正整数 ai。这些整数在十进制下每一位都不为 0。
小 L 想进行一次拆分与重组:首先,将所有卡片上的数字的每一位单独拆下,得到一堆数字积木(每块积木上写着一个 1 到 9 的数字)。然后,他需要把这些积木全部用上,为每一张卡片重新拼出一个新的整数。重新拼出的第 i 个整数的位数必须等于原来 ai 的位数。
小 L 的目标是让全部新拼出的整数之和尽可能大。请问他能达到的最大总和是多少?
约束:卡片数量 n 满足 1≤n≤2×105,每张卡片上的整数 ai 满足 1≤ai≤109,且 ai 的十进制表示中不含数字 0。
第一行包含一个整数 n,表示卡片数量。 第二行包含 n 个整数 a1,a2,…,an,表示每张卡片上的原始整数。
输出一个整数,表示在所有符合要求的新数字组合方式中,新数字之和的最大可能值。
输入
1
123
输出
321
说明
只有一张卡片,原数字为 123。拆出的数字积木为 1、2、3,卡片位数固定为 3。为了最大化新数字,应将最大的数字积木 3 放在最高位(权重 102),2 放在次高位(101),1 放在最低位(100),拼得新数字 321。
此时总和为 3×100+2×10+1×1=321。
输入
2
9 111
输出
912
说明
数字积木为 9 和 1、1、1。两张卡片的位数分别为 1 和 3,因此可用权重集合为 {102,101,100,100}(即 100,10,1,1)。
为使总和最大,将唯一的数字 9 分配给最高的权重 100,其余三个 1 依次分配给 10,1,1。总和为 9×100+1×10+1×1+1×1=900+10+1+1=912。
输入
3
2 34 56
输出
119
说明
数字积木有 2、3、4、5、6,各出现一次。三张卡片的位数分别为 1、2、2,对应权重集合为 {101,101,100,100,100}(即 10,10,1,1,1)。
从大到小分配:数字 6 和 5 分别配给两个 10,4、3、2 配给三个 1。总和为 6×10+5×10+4×1+3×1+2×1=60+50+4+3+2=119。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册