【数学推理】蓝桥杯第十四届---阶乘的和

题目描述

给定 n 个数 ,问能满足 m! 为 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘,即 1 × 2 × 3 × · · · × m。

输入格式

输入的第一行包含一个整数 n 。

第二行包含 n 个整数,分别表示 Ai,相邻整数之间使用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。

样例输入

复制代码
3
2 2 2

样例输出

复制代码
3

提示

对于 40% 的评测用例,n ≤ 5000 ;

对于所有评测用例,1 ≤ n ≤ 10^5 1 ≤ Ai ≤ 10^9 。


(a!+b!+c!)(a<b<c) ,假设 b!是(a!+b!+c!)的最大因数那么一定是个小数(因为一定是一个小数,一定是整数),所以(a!+b!+c!)的最大因数一定是a!,如果有(a+1)个a!,那么 a!+a!+...+a!=(a+1)*a!=(a+1)! ,(如样例中的 2!+2!+2!=3*2!=3! )。


cpp 复制代码
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
#define int long long
const int N=1e5+10;
unordered_map<int,int> mp;
signed main(){
	int n;
	cin>>n;
	int minv=1e9+10;
	for(int i=1;i<=n;i++){
		int x;cin>>x;
		mp[x]++;
		minv=min(minv,x);
	}
	while(mp.count(minv)){
		int t=mp[minv]/(minv+1);
		int k=mp[minv]%(minv+1);
		if(k!=0) break;
		mp[minv+1]+=t;
		minv++;
	}
	cout<<minv<<endl;
	return 0;
}
相关推荐
Ulyanov9 分钟前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业1 小时前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
91刘仁德2 小时前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
diediedei2 小时前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI2 小时前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型
mmz12072 小时前
分治算法(c++)
c++·算法
睡一觉就好了。3 小时前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
Tansmjs3 小时前
C++编译期数据结构
开发语言·c++·算法
金枪不摆鳍3 小时前
算法-字典树
开发语言·算法
diediedei3 小时前
C++类型推导(auto/decltype)
开发语言·c++·算法