当前位置: 首页 > news >正文

蓝桥杯 阶乘的和

题目

链接

分析

  • 其实是简单的数学思想
    n个数先排序,得到从小到大的a1~an

  • 这些数的阶乘和可以提取出最小的a1的阶乘
    然后看是否可以从剩下的和式中提取出a1+1
    条件就是原来a1的数量要是a1+1的整数倍,因为提取a1的阶乘时,a1会变成1,其他会变成a1+1累乘到ai,因此其他一定可以提出ai+1

  • 如果可以提出a1+1,我们再看是否可以提出a1+2
    条件就是上一步提取a1+1后剩余的部分是否可以整除a1+2,这里可以设置一个pre保留上一步中a1个数整除a1+1的结果,因为这个是上一步提取后和式里剩下的
    现在需要判断pre与a1+1的和是否可以整除a1+2,因为同理和式里大于等于a1+2的数的阶乘都可以提出a1+2

  • 上面的步骤不断循环,判断能不能一步步往前提即可

代码

n = int(input())
a = list(map(int, input().split()))

# 排序
a.sort()

# 记录每个数出现的次数
num = {i: 0 for i in a}
for i in a:
    num[i] += 1

m = a[0]
pre = 0
new = num[m]
while (pre + new) % (m + 1) == 0:
    pre = (pre + new) // (m + 1)
    m += 1
    new = num[m] if m in num else 0

print(m)

相关文章:

  • 登录Xshell主机及Linux基本指令
  • SpringBoot之一个注解完成所有类型的文件下载!
  • MySQL UPDATE 更新操作详解
  • 深入解析GORM的配置选项及示例
  • clickhouse清除system 表数据释放磁盘空间
  • 内容中台智能推荐服务创新路径
  • 网上怎么样可以挣钱,分享几种可以让你在家赚钱的兼职项目
  • 开发过程中的网络协议
  • SpringMVC(八)Knife4j 接口文档
  • XML 树结构
  • 爬虫逆向:逆向中用到汇编语言详细总结
  • 网络层协议
  • 教育直播培训系统源码解析:核心功能与实现方式
  • Android Room 框架公共模块源码深度剖析(四)
  • React Native 如何使用 Expo 快速开发?
  • 《C#上位机开发从门外到门内》3-2::Modbus数据采集系统
  • 缓存相关内容
  • 为wordpress核心functions文件瘦身
  • windows常用cmd命令
  • 【Unity3D】Addressables使用流程
  • 巴菲特股东大会前瞻:执掌伯克希尔60年,巨轮将驶向何方
  • 旭辉控股集团:去年收入477.89亿元,长远计划逐步向轻资产业务模式转型
  • 金砖国家外长会晤主席声明(摘要)
  • 烟花秀、新航线、购物节......上海邮轮文化旅游节今日开幕
  • 笔墨如何“构城”?上海美院城市山水晋京展出
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤