酷代码 AI
菜单

叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻。毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌。一千多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定是一生最难忘的时刻! 彩排了一次,老师不太满意。当然啦,取每位同学的号数来找最大公约数显然不太合理。于是老师给每位同学评了一个能力值。于是现在问题变为,从 个学生中挑出 个人使得他们的默契程度(即能力值的最大公约数)最大。但因为节目太多了,而且每个节目需要的人数又不知道。老师想要知道所有情况下能达到的最大默契程度是多少。这下子更麻烦了,还是交给你吧~ PS:一个数的最大公约数即本身。 输入 第一行一个正整数 。 第二行为 个空格隔开的正整数,表示每个学生的能力值。 输出 总共 行,第 行为 情况下的最大默契程度。 样例输入 复制 4 1 2 3 4 样例输出 复制 4 2 1 1 提示 记输入数据中能力值的最大值为 。 - 对于 的数据, , ; - 对于另 的数据, , ; - 对于 的数据, , 。 来源/分类

以下是解决此问题的Python代码: ```python # 读取输入 n = int(input()) abilities = list(map(int, input().split())) # 统计每个能力值的因数出现的次数 factor_count = {} for ability in abilities: for i in range(1, int(ability0.5) + 1): if ability % i == 0: if i in factor_count: factor_count[i] += 1 else: factor_count[i] = 1 if i != ability // i: if ability // i in factor_count: factor_count[ability // i] += 1 else: factor_count[ability // i] = 1 # 初始化结果列表 results = [0] * n # 遍历每个因数及其出现次数 for factor, count in factor_count.items(): for k in range(1, count + 1): results[k - 1] = max(results[k - 1], factor) # 输出结果 for result in results: print(result) ``` 代码解释 1. 读取输入:首先读取学生的数量`n`,然后读取每个学生的能力值并存储在列表`abilities`中。 2. 统计因数出现次数:对于每个能力值,找出它的所有因数,并统计每个因数出现的次数,存储在字典`factor_count`中。 3. 初始化结果列表:创建一个长度为`n`的列表`results`,用于存储每种情况下的最大默契程度。 4. 更新结果列表:遍历每个因数及其出现次数,对于每个因数,如果它出现的次数为`count`,则更新`results[0]`到`results[count - 1]`的值,取当前值和该因数的最大值。 5. 输出结果:遍历结果列表并输出每个值。 复杂度分析 - 时间复杂度:$O(n\sqrt{m})$,其中$n$是学生的数量,$m$是能力值的最大值。 - 空间复杂度:$O(m)$,主要用于存储因数出现次数的字典。 [2026-01-24 13:10:18 | AI问答 | 487点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多