P1009 [NOIP 1998 普及组] 阶乘之和

题目描述

用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。

其中 ! 表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。

输入格式

一个正整数 n。

输出格式

一个正整数 S,表示计算结果。

输入输出样例

输入 

3

输出 

9

说明/提示

【数据范围】

对于 100% 的数据,1≤n≤50。

代码

无注释版

#include<bits/stdc++.h>
using namespace std;
const int m=110;
int a[110],b[110];
int main(){int n;cin>>n;a[0]=b[0]=1;for(int i=2;i<=n;i++){for(int j=0;j<m;j++){b[j]*=i;}for(int j=0;j<m;j++){if(b[j]>9){b[j+1]+=b[j]/10;b[j]%=10;}}for(int j=0;j<m;j++){a[j]+=b[j];if(a[j]>9){a[j+1]+=a[j]/10;a[j]%=10;}}}int k=m;for(k=m;k>0&&a[k]==0;k--);for(int i=k;i>=0;i--){cout<<a[i];}}

有注释版

#include<bits/stdc++.h>
using namespace std;const int m = 110;  // 定义一个常量m,表示数组的大小,用于存储结果int a[110], b[110];  // a数组用来存储最终结果,b数组用来存储每次计算阶乘的结果int main(){b数组用来存储每次计算阶乘的结果int main(){int n;cin >> n;  // 输入n,表示我们要求1! + 2! + ... + n!a[0] = b[0] = 1;  // 初始化a和b数组的第一个元素为1// 从2!开始计算,到n!for(int i = 2; i <= n; i++){// 计算i!,存储到b数组中for(int j = 0; j < m; j++){b[j] *= i;}// 处理b数组中因乘法导致的进位for(int j = 0; j < m; j++){if(b[j] > 9){  // 如果b[j]大于9,说明需要进位b[j+1] += b[j] / 10;  // 将进位加到b[j+1]上b[j] %= 10;  // b[j]保留个位数}}// 将b数组的结果加到a数组中(加上当前阶乘值)for(int j = 0; j < m; j++){a[j] += b[j];  // a[j] += b[j]表示累加每个阶乘的结果if(a[j] > 9){  // 处理进位a[j+1] += a[j] / 10;  // 将进位加到a[j+1]上a[j] %= 10;  // a[j]保留个位数}}}// 找到a数组中有效数字的最后一个位置int k = m;for(k = m; k > 0 && a[k] == 0; k--);  // 从最后一个元素开始向前查找,找到第一个不为0的元素// 输出结果for(int i = k; i >= 0; i--){cout << a[i];  // 从高位到低位输出a数组的数字}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 的 os 库常见使用方法(操作目录及文件)

前言&#xff1a; os 模块是 Python 标准库中用于与操作系统交互的核心模块&#xff0c;提供了许多操作文件和目录的功能。以下是常见的使用方法&#xff1a; 1. 目录操作 方法功能说明示例os.getcwd()获取当前工作目录print(os.getcwd())os.chdir(path)切换当前工作目录os.ch…

vue3 el-table实现字段可编辑

在Vue 3中&#xff0c;如果你想让el-table&#xff08;Element Plus的表格组件&#xff09;的字段可编辑&#xff0c;你可以通过以下方式来实现&#xff1a; 使用cell-mouse-enter和cell-mouse-leave事件动态显示编辑图标或控件 你可以在鼠标进入单元格时显示一个编辑图标或输…

基于shardingsphere的分库分表方案

一、准备docker容器 启动两个mysql的docker容器 docker run -v /root/mysql_volume/data:/var/lib/mysql -v /root/mysql_volume/conf:/etc/mysql/conf.d -v /root/mysql_volume/my.cnf:/etc/my.cnf -p 3306:3306 --name mysql --restartalways --privilegedtrue -e MYSQL_RO…

SearxNG本地搜索引擎

SearxNG 是一个强大、开源的 元搜索引擎(meta search engine),它不会存储用户信息,注重隐私保护,并支持从多个搜索引擎聚合结果,用户可以自建部署,打造一个无广告、可定制的搜索平台。 🔍 什么是 SearxNG? SearxNG 是 Searx 的一个积极维护的分支(fork),意在改进…

Vue3.5 企业级管理系统实战(十九):菜单管理

篇幅原因&#xff0c;本节先探讨菜单管理页面增删改查相关功能&#xff0c;角色菜单&#xff0c;菜单权限&#xff0c;动态菜单等内容放在后面。 1 菜单 api 在 src/api/menu.ts 中添加菜单 api&#xff0c;代码如下&#xff1a; //src/api/menu.ts import service from &qu…

【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】

1. HCI_Read_Local_Version_Information 命令介绍 1. 功能&#xff08;Description&#xff09; HCI_Read_Local_Version_Information 命令用于读取本地 Bluetooth Controller 的版本信息&#xff0c;包括 HCI 和 LMP 层的版本&#xff0c;以及厂商 ID 和子版本号。 这类信息用…

React底层架构深度解析:从虚拟DOM到Fiber的演进之路

一、虚拟DOM&#xff1a;性能优化的基石 1.1 核心工作原理 React通过JSX语法将组件转换为轻量级JavaScript对象&#xff08;即虚拟DOM&#xff09;&#xff0c;而非直接操作真实DOM。这一过程由React.createElement()实现&#xff0c;其结构包含元素类型、属性和子节点等信息&a…

从AlphaGo到ChatGPT:AI技术如何一步步改变世界?

从AlphaGo到ChatGPT&#xff1a;AI技术如何一步步改变世界&#xff1f; 这里给大家分享一个人工智能学习网站。点击跳转到网站。 https://www.captainbed.cn/ccc 前言 在科技发展的历史长河中&#xff0c;人工智能&#xff08;AI&#xff09;技术无疑是最为璀璨的明珠之一。从…

关于在Unity项目中使用Post Processing插件打包到web端出现的问题

关于在Unity项目中使用Post Processing插件打包到web端出现的问题 解决方法&#xff1a;是不激活摄像机上的Post Processing有关组件&#xff0c;拉低场景中的Directional Light平行光的强度进行web端打包。 &#xff08;烘焙灯光时是可以激活。&#xff09; web端支持这个Pos…

MySQL - 如何突破单库性能瓶颈

数据库服务器硬件优化 我们来看看对数据库所在的服务器是如何进行优化的&#xff0c;服务器是数据库的宿主&#xff0c;其性能直接影响了数据库的性能&#xff0c;所以服务器的优化也是数据库优化的第一步。 数据库服务器通常是从 CPU、内存、磁盘三个角度进行硬件优化的&…

用 CodeBuddy 搭建「MiniGoal 小目标打卡器」:一次流畅的 UniApp 开发体验

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在日常生活中&#xff0c;我们总是希望能够坚持一些小习惯&#xff0c;比如每天锻炼十分钟、读一页书、早睡十分…

OpenCV 环境搭建与概述

// //OpenCV-4.11.0 C VS2019 // 一、OpenCV学习路线 1、入门: OpenCV图像读写、视频读写、基本像素处理、基本卷积处理、基本C开发知识。 2、初级: OpenCV自定义卷积操作、图像梯度、边缘提取、二值分析、视频分析、形态学处理、几何变换与透视变换。 3、中级: 角点查找、BL…

如何快速更换电脑浏览器ip:教程与注意事项

无论是为了访问地域限制内容、保护隐私&#xff0c;还是解决网络问题&#xff0c;快速更换浏览器IP地址的需求日益增多。以下是快速更换电脑浏览器IP地址的几种常用方法及注意事项&#xff0c;结合了多种场景下的解决方案&#xff1a; 一、快速更换浏览器IP的方法 1. 代理服务…

【kafka】kafka概念,使用技巧go示例

1. Kafka基础概念 1.1 什么是Kafka&#xff1f; Kafka是一个分布式流处理平台&#xff0c;用于构建实时数据管道和流式应用。核心特点&#xff1a; 高吞吐量&#xff1a;每秒可处理百万级消息持久化存储&#xff1a;消息按Topic分区存储在磁盘分布式架构&#xff1a;支持水平…

掌握Git:版本控制与高效协作指南

一、初始Git 提出问题&#xff1a;无论是在工作还是学习&#xff0c;我们在编写各种文档的时候&#xff0c;更改失误&#xff0c;失误后恢复到原来版本&#xff0c;不得不复制出一个副本。 每个版本由各自的内容&#xff0c;但最终只有一个报告需要被我们使用。 但在此之前的…

【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-踩坑点:国民健康保险】

【生活相关-日语-日本-东京-搬家后-引越&#xff08;ひっこし&#xff09;&#xff08;3&#xff09;-注意点&#xff1a;国民健康保险】 1、前言2、情况说明&#xff08;1&#xff09;问题说明&#xff08;2&#xff09;情况说明&#xff08;1&#xff09;收到情况&#xff08…

linux——mysql故障排查与生产环境优化

目录 一&#xff0c;mysql数据库常见的故障 1&#xff0c;故障现象1 2&#xff0c;故障现象2 3&#xff0c;故障现象3 &#xff14;&#xff0c;故障现象&#xff14; &#xff15;&#xff0c;故障现象&#xff15; &#xff16;&#xff0c;故障现象&#xff16; 二&…

【C#】用 DevExpress 创建带“下拉子表”的参数表格视图

展示如何用 DevExpress 创建带“下拉子表”的参数表格视图。主表为 参数行 ParamRow&#xff0c;子表为 子项 ChildParam。 一、创建模型类 public class ParamRow {public string Pn { get; set; }public string DisplayName { get; set; }public string Value { get; set; }…

【JavaScript】用 Proxy 拦截对象属性

目录 一、Proxy 的基本结构&#xff08;打地基&#xff09; 二、最常用的两个拦截方法&#xff1a;get 和 set 1. get(target, key) 2. set(target, key, value) 三、说到这&#xff0c;那就可以回到题目来 四、什么是 Reflect&#xff1f; 总结不易&#xff0c;本章节对…

[IMX] 02.GPIO 寄存器

目录 手册对应章节 1.GPIO 复用&#xff08;引脚功能选择&#xff09;- IOMUXC_SW_MUX_CTL_PAD_xxx 2.GPIO 电气特性 - IOMUXC_SW_PAD_CTL_PAD_xxx 3.GPIO 数据与控制寄存器 3.1.数据 - DR 3.2.输入/输出选择 - GDIR 3.3.状态 - PSR 3.4.中断触发控制 - ICR 3.5.中断使…