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

蓝桥杯 阶乘的和(C++完整代码+详细分析)

题目描述

原题链接
阶乘的和

问题描述
给定 n 个数 Ai​,问能满足 m! 为 ∑=(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘,即 1×2×3×⋯×m。

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

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

样例输入

3
2 2 2

样例输出

3

题目分析

要点1:阶乘之和的因数

n个不同的阶乘Ai 之和的最大因数(可写成m!)即为n个阶乘中的那个最小的阶乘

例如,
3个阶乘: 2 ! 4 ! 3 ! 2! 4! 3! 243
之和为 2 ∗ 1 + 4 ∗ 3 ∗ 2 ∗ 1 + 3 ∗ 2 ∗ 1 = 32 2*1+4*3*2*1+3*2*1=32 21+4321+321=32
能作其因数的阶乘的最大值即为 2 ! 2! 2

因为,要想做阶乘之和的因数,则一定是各个阶乘的因数,则最大因数一定为最小的那个阶乘。

要点2:阶乘之和的转化

i + 1 i+1 i+1 i ! i! i! 可转化为 ( i + 1 ) ! (i+1)! (i+1)!

例如,
3 3 3 2 ! 2! 2! 3 ∗ 2 ! = 3 ! 3*2!=3! 32!=3!

因为,
i + 1 i+1 i+1 i ! i! i! ( i + 1 ) ∗ i ! = ( i + 1 ) ! (i+1)*i!=(i+1)! (i+1)i!=(i+1)!

整体分析

则我们可以记录数据中最小的阶乘 res
以及各个阶乘出现的次数(便于进行阶乘的转化)

scanf("%d",&n);unordered_map<int,int> map;  //map记录Ai阶乘的次数int res=2e9;  //res为阶乘的最小值,设定初值为无穷大for(int i=0;i<n;i++){int a;  //阶乘a!scanf("%d",&a);map[a]++;  //阶乘a!出现次数+1res=min(res,a);  //找到Ai中的最小值res}

从阶乘数最小的res开始遍历阶乘,
若满足 m a p [ i ] % ( i + 1 ) = = 0 map[i]\%(i+1)==0 map[i]%(i+1)==0
则说明存在 i + 1 i+1 i+1 i ! i! i! ,可转化为 ( i + 1 ) ! (i+1)! (i+1)!
且可转为 ( i + 1 ) ! (i+1)! (i+1)!的个数为 m a p [ i ] / ( i + 1 ) map[i]/(i+1) map[i]/(i+1).
否则,
更新阶乘失败,不存在更大的阶乘因数,退出循环遍历。

for(int i=res;;i++){if(map[i]%(i+1)==0){  //有i+1个i!,则可转化为(i+1)!res=i+1;  //答案更新为i+1map[i+1]+=map[i]/(i+1);  //由i!转化为map[i]/(i+1)个(i+1)!}else break;  //退出循环}

完整代码

#include <iostream>
#include <unordered_map>
#include <algorithm>
using namespace std;
int n;
int main()
{scanf("%d",&n);unordered_map<int,int> map;  //map记录Ai阶乘的次数int res=2e9;  //res为结果,设定初值为无穷大for(int i=0;i<n;i++){int a;  //阶乘a!scanf("%d",&a);map[a]++;  //阶乘出现次数+1res=min(res,a);  //找到Ai中的最小值}for(int i=res;;i++){if(map[i]%(i+1)==0){  //有i+1个i!,则可转化为(i+1)!res=i+1;  //答案更新为i+1map[i+1]+=map[i]/(i+1);  //由i!转化为map[i]/(i+1)个(i+1)!}else break;}printf("%d",res);return 0;
}

相关文章:

蓝桥杯 阶乘的和(C++完整代码+详细分析)

题目描述 原题链接 阶乘的和 问题描述 给定 n 个数 Ai​&#xff0c;问能满足 m! 为 ∑(Ai!) 的因数的最大的 m 是多少。其中 m! 表示 m 的阶乘&#xff0c;即 123⋯m。 输入格式 输入的第一行包含一个整数 n。 第二行包含 n 个整数&#xff0c;分别表示 Ai​&#xff0c;相…...

【Bug 记录】el-sub-menu 第一次进入默认不高亮

项目场景&#xff1a; 项目场景&#xff1a;el-sub-menu 第一次进入默认不高亮 问题描述 例如&#xff1a;sub-menu 的 index 后端默认传过来是 number&#xff0c;我们需要手动转为 string&#xff0c;否则会有警告&#xff0c;而且第一次进入 sub-menu 默认不高亮。 解决方…...

SpringCloud两种注册中心

SpringCloud 基本概念 系统架构 我们之前做的所有的项目都属于单体架构&#xff0c;下面我们将要学习更适合大型项目的分布式架构 单体架构&#xff1a; 将业务的所有功能几种在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a;架构简单、部署成本低 缺点&am…...

陕西羊肉泡馍:味蕾上的西北风情

陕西羊肉泡馍:味蕾上的西北风情 在广袤的西北地区,有一道美食以其独特的口感、丰富的营养价值和深厚的文化底蕴,成为了无数食客心中的佳肴——陕西羊肉泡馍。这道传统美食,不仅承载着陕西人民的饮食智慧,更以其醇厚的味道和暖胃耐饥的特性,赢得了国内外食客的一致赞誉。 历史渊…...

蓝桥杯试题:整数反转

一、题目要求: 给定一个整数&#xff0c;请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式&#xff0c;即除非给定的原数为零&#xff0c;否则反转后得到的新数的最高位数字不应为零 二、题目分析代码演示&#xff1a; 该程序的主要功能是接收一个整数输入&…...

Moretl FileSync增量文件采集工具

永久免费: <下载> <使用说明> 我们希望Moretl FileSync是一款通用性很好的文件日志采集工具,解决工厂环境下,通过共享目录采集文件,SMB协议存在的安全性,兼容性的问题. 同时,我们发现工厂设备日志一般为增量,为方便MES,QMS等后端系统直接使用数据,我们推出了增量采…...

day1代码练习

输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身) #include <stdio.h>// 判断一个数是否为完美数的函数 int panduan(int n) {if (n < 2) {return 0; // 小于2的数不可能是完美数}int sum 1; // 因子和初始化为1&#xff08;因…...

【Pytest】结构介绍

1.目录结构介绍 project_root/ │ ├── tests/ # 测试用例存放目录 │ ├── __init__.py │ ├── test_module1.py │ ├── module1.py # 被测试的模块 ├── conftest.py # pytest配置文件&#xff0c;可定义fixture和钩子函数 ├── py…...

Django基础之ORM

一.前言 上一节简单的讲了一下orm&#xff0c;主要还是做个了解&#xff0c;这一节将和大家介绍更加细致的orm&#xff0c;以及他们的用法&#xff0c;到最后再和大家说一下cookie和session&#xff0c;就结束了全部的django基础部分 二.orm的基本操作 1.settings.py&#x…...

【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析

在Windows系统中&#xff0c;你可以通过修改环境变量 PATH 来使得 ffmpeg.exe 可在任意路径下直接使用。要通过Python修改环境变量并立即生效&#xff0c;如图&#xff1a; 你可以使用以下代码&#xff1a; import os import winreg as reg# ffmpeg.exe的路径 ffmpeg_path …...

检测到联想鼠标自动调出运行窗口,鼠标自己作为键盘操作

联想鼠标会自动时不时的调用“运行”窗口 然后鼠标自己作为键盘输入 然后打开这个网页 &#xff08;不是点击了什么鼠标外加按键&#xff0c;这个鼠标除了左右和中间滚轮&#xff0c;没有其他按键了&#xff09;...

web UI自动化测试笔记

在当今数字化转型的浪潮中&#xff0c;Web 应用已经无处不在&#xff0c;而其质量保障的关键之一就是自动化测试。想象一下&#xff0c;如果每次都手动验证 UI 功能&#xff0c;不仅耗时耗力&#xff0c;还容易遗漏问题。Python 的强大生态为 Web UI 自动化测试提供了高效的解决…...

计算机网络 (60)蜂窝移动通信网

一、定义与原理 蜂窝移动通信网是指将一个服务区分为若干蜂窝状相邻小区并采用频率空间复用技术的移动通信网。其原理在于&#xff0c;将移动通信服务区划分成许多以正六边形为基本几何图形的覆盖区域&#xff0c;称为蜂窝小区。每个小区设置一个基站&#xff0c;负责本小区内移…...

计算机网络三张表(ARP表、MAC表、路由表)总结

参考&#xff1a; 网络三张表&#xff1a;ARP表, MAC表, 路由表&#xff0c;实现你的网络自由&#xff01;&#xff01;_mac表、arp表、路由表-CSDN博客 网络中的三张表&#xff1a;ARP表、MAC表、路由表 首先要明确一件事&#xff0c;如果一个主机要发送数据&#xff0c;那么必…...

DRF开发避坑指南01

在当今快速发展的Web开发领域&#xff0c;Django REST Framework&#xff08;DRF&#xff09;以其强大的功能和灵活性成为了众多开发者的首选。然而&#xff0c;错误的使用方法不仅会导致项目进度延误&#xff0c;还可能影响性能和安全性。本文将从我个人本身遇到的相关坑来给大…...

批量提取多个 Excel 文件内指定单元格的数据

这篇文章将介绍如何从多个相同格式的Excel文件中&#xff0c;批量提取指定单元格的数据&#xff0c;合并后保存到新的工作薄。 全程0代码&#xff0c;可视化操作。 提取前&#xff1a; 提取后&#xff1a; 准备数据 这里准备了3个测试数据 开始提取 打开的卢易表&#xff0…...

#HarmonyOS篇:build-profile.json5里面配置productsoh-package.json5里面dependencies依赖引入

oh-package.json5 用于描述包名、版本、入口文件和依赖项等信息。 {"license": "","devDependencies": {},"author": "","name": "entry","description": "Please describe the basic…...

Spring集成Redis|通用Redis工具类

一、基础使用 概述 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis需要 那些步骤呢。 1、 JedisPoolConfig (这个是配置连接池) 2、 RedisConnectionFactory 这个是配置连接信息&#xff0c;这里的RedisConnectionFactory是一个接 …...

Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭

文章目录 前言操作步骤大纲1.使用Vue自带的报错捕获机制添加报错信息2.在接口报错部分添加相同机制3.把报错信息添加到Vuex中方便全局使用4.添加报错页面备用5.app页面添加if判断替换报错界面 效果备注&#xff1a;vue项目中Uncaught runtime errors:怎样关闭 前言 在开发Vue项…...

【力扣】219. 存在重复元素 II

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

python可视化:俄乌战争时间线关键节点与深层原因

俄乌战争时间线可视化分析&#xff1a;关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一&#xff0c;自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具&#xff0c;系统分析这场战争的时间线、关键节点及其背后的深层原因&#xff0c;全面…...

Ansys Maxwell:线圈和磁体的静磁 3D 分析

本博客展示了如何在 Ansys Maxwell 中执行静磁 3D 分析&#xff0c;以计算载流线圈和永磁体之间相互作用产生的扭矩。在这个例子中&#xff0c;线圈中的电流产生一个沿 Y 轴指向的磁场&#xff0c;而永磁体沿 X 轴被磁化。这种配置导致围绕 Z 轴的扭矩。分步工作流程包括构建几…...

夏普比率(Sharpe ratio)​

具有投资常识的人都明白&#xff0c;投资光看收益是不够的&#xff0c;还要看承受的风险&#xff0c;也就是收益风险比。 夏普比率描述的正是这个概念&#xff0c;即每承受一单位的总风险&#xff0c;会产生多少超额的报酬。 用数学公式描述就是&#xff1a; 其中&#xff1…...