题目
我们把所有各位数字的乘积相同的数归为一类。例如 1362 和 2332 就是同一类,因为 1×3×6×2=2×3×3×2。给定 N 个正整数,请你判断它们可以被归成多少不同的类?
输入格式: 输入在第一行给出一个正整数 N(≤10 5 ),第二行给出 N 个不超过 10 7 的正整数,数字间以空格分隔。
输出格式: 在一行中输出 N 个给定的整数可以归类的数量、以及规模最大的类中最小的乘积。数字间以一个空格分隔。
输入样例: 10 1234 98 329 9552 47621 8862 5539 2333 5365 463 输出样例: 7 54
样例说明: 10 个给定数字对应的各位数字乘积依次为:24、72、54、450、336、768、675、54、450、72。所以一共有 7 个不同的种类,即:24、72、54、450、336、768、675。
其中规模最大的有 2 个 54、2 个 72、2 个 450。即这 3 个种类都分别对应了 2 个数字,在规模相等、都是最大的情况下,我们输出最小的乘积 54。
解题思路
N = int(input()) inputList = list(input().split()) # N = int("10") # inputList = list("1234 98 329 9552 47621 8862 5539 2333 5365 463".split()) resList = [] for i in inputList: res = 1 for j in i: res = res * int(j) resList.append(res) from collections import Counter counter = Counter(resList).most_common() counter.sort(key= lambda x:(-x[1],x[0])) if len(counter) == 0: print("0") else: print(len(counter),counter[0][0])