想使用哈希表存元素个数想起来defaultdict
dict和defaultdic的区别
访问不存在的键:
dict:当访问不存在的键时,会抛出KeyError异常。
defaultdict:当访问不存在的键时,会调用工厂函数返回一个默认值。
fruits = {"apple": 2, "banana": 1}
print(fruits["orange"]) # KeyError: 'orange'
fruit_count = defaultdict(int)
print(fruit_count["orange"]) # 输出:0
初始化默认值:
dict:需要手动为每个键设置初始值,例如使用setdefault方法。
defaultdict:在创建时通过工厂函数一次性设置所有键的初始值。
fruits = {}
fruits.setdefault("apple", 0)
fruits.setdefault("banana", 0)
fruit_count = defaultdict(int)
示例题目
https://www.lanqiao.cn/problems/3527/learning/
Ai!的累加结果,A1! + A2! + … + An!,A1 < A2 < … < An,则A1!为最大公因数
考虑阶乘的合并情况:有(x+1) * y个x!,能合并为y个(x+1)!。即合成条件为x!的个数为x+1的倍数
使用map存储某个数x的阶乘出现的次数,若达到一定次数,则转换为x+1的阶乘
from collections import defaultdict
n = int(input())
a = list(map(int, input().split()))
a.sort()
Map = defaultdict(int)
for x in a:
Map[x] += 1
x = a[0]
while True:
cnt = Map[x]
if cnt % (x + 1) == 0:
Map[x + 1] += cnt // (x + 1)
x += 1
else:
print(x)
break
来源链接:https://www.cnblogs.com/dinosauria/p/18722873
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容