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

蓝桥杯2023年第十四届省赛真题-阶乘的和

蓝桥杯2023年第十四届省赛真题-阶乘的和
时间限制: 2s 内存限制: 320MB 提交: 3519 解决: 697
题目描述
给定 n 个数 Ai,问能满足 m! 为∑ni=1(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘,即 1 × 2 × 3 × · · · × m。
输入格式
输入的第一行包含一个整数 n 。
第二行包含 n 个整数,分别表示 Ai,相邻整数之间使用一个空格分隔。
输出格式
输出一行包含一个整数表示答案。
样例输入复制
3
2 2 2
样例输出复制
3
提示
对于 40% 的评测用例,n ≤ 5000 ;
对于所有评测用例,1 ≤ n ≤ 105 1 ≤ Ai ≤ 109 。

1.分析

        1.计算n!的个数,如果个数恰好可以整除(n+1),它就可以变成(n+1)!的倍数。

        2.重复第一步操作计算(n+1)!的个数,直到不能够整除为止,就是最大m。

        3.可以用map存储,map会自动排序,遍历即可。

2.代码

#include<iostream>
#include<cmath>
#include<map>
#include<string>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MAX = 1e6 + 10;
LL a[MAX], n;
map<LL, LL> m;
int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		m[a[i]]++;                 //计数
	}
	LL s = 0;
	for (auto it : m) {
		LL x = it.first, y = it.second;
		s = x;                            //记录最大的m
		if (y % (x + 1) == 0) {           //判断是否可以整除(n+1)
			m[x + 1] += y / (x + 1);
		}
		else break;                    //不行就退出
	}
	cout << s << endl;              //输出
	return 0;
}

相关文章:

  • 【LangChain入门 1】安装
  • mac brew 安装的php@7.4 打开redis扩展
  • Elasticsearch8.17 集群重启操作
  • Linux 权限的概念
  • 数据库GreenDao的使用、升级、以及相关常用注释说明
  • 【Linux系统】Linux进程终止的N种方式
  • 河南电站实证,TOPCon较XBC组件发电早晚时段增益7.4%
  • Linux 一步部署DHCP服务
  • Spring WebFlux之流式输出
  • 专业学习|改进的多种群竞争粒子群优化算法
  • vue3 报错 Could not find a declaration file for module ‘/App.vue‘
  • 【免费】2000-2019年各省地方财政国内增值税数据
  • ubuntu20.04系统没有WiFi图标解决方案_安装Intel网卡驱动
  • 在D365 CRM中 实体的Lookup View ,在lookup field的form上配置lookup view,显示少于25条,比如3条
  • 【Auto-Scroll-List 组件设计与实现分析】
  • GitHub 超火的开源终端工具——Warp
  • Python 小数/浮点数(float)大全
  • 网络协议抓取与分析(SSL Pinning突破)
  • 谷歌or-tools开源库入门
  • 【大模型实战篇】多模态推理模型Skywork-R1V
  • 多地再发网约车从业及投资风险提示:避免盲目花费大笔资金“购车”入行
  • 交涉之政、交涉之学与交涉文献——《近代中外交涉史料丛书》第二辑“总序”
  • 会计江湖|年报披露关注什么:独董给出的“信号”
  • 中国国家电影局与俄罗斯文化部签署电影合作文件
  • 顾家家居:拟定增募资近20亿元,用于家居产品生产线的改造和扩建等
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事