前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PAT-2021年秋季考试 乙级 7-2 数以类聚 (20 分)

PAT-2021年秋季考试 乙级 7-2 数以类聚 (20 分)

原创
作者头像
freesan44
修改2021-09-14 10:34:09
4720
修改2021-09-14 10:34:09
举报
文章被收录于专栏:freesan44

题目

我们把所有各位数字的乘积相同的数归为一类。例如 1362 和 2332 就是同一类,因为 1×3×6×2=2×3×3×2。给定 N 个正整数,请你判断它们可以被归成多少不同的类?

输入格式:

输入在第一行给出一个正整数 N(≤10

5

),第二行给出 N 个不超过 10

7

的正整数,数字间以空格分隔。

输出格式:

在一行中输出 N 个给定的整数可以归类的数量、以及规模最大的类中最小的乘积。数字间以一个空格分隔。

代码语言:txt
复制
输入样例:
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。

解题思路

代码语言:txt
复制
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])

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 解题思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档