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

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.xdnf.cn/news/7136.html

相关文章:

  • 深入理解 LangChain 文档处理机制:Document 类与文档加载器详解
  • uni-app学习笔记七-vue3事件处理
  • 优化 Spring Boot 应用启动性能的实践指南
  • 单片机超频怎么搞?
  • 实时时钟项目设计
  • 腾讯云证书过期提醒的应对措施,Caddy 自动管理的 Let‘s Encrypt 证书.
  • 使用国内源加速Qt在线安装
  • Docker拉取镜像报错Error response from daemon: Get “https://registry-1.docker.io/v2/“
  • 测试--测试分类 (白盒 黑盒 单元 集成)
  • vscode中Debug c++
  • Android开发-列表类视图
  • 亚马逊新品3周冲刺BSR前10:数据驱动的冷启动破局指南
  • 模型评估与调优(PyTorch)
  • 四品种交易策略
  • MetaMask安装及使用-使用水龙头获取测试币的坑?
  • C++ThreadPool
  • 回溯实战篇3
  • 新电脑软件配置二:安装python,git, pycharm
  • 2025年PMP 学习二十 第13章 项目相关方管理
  • docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
  • 【数字电路】第七章 脉冲波形的产生与整形电路
  • 【推荐】新准则下对照会计报表172个会计科目解释
  • Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得
  • 【Docker 新手入门指南】第六章:容器操作
  • Spring3+Vue3项目中的知识点——JWT
  • 2.2.1
  • 抖音视频下载工具 v1.1 自用分享
  • 26考研——进程与线程_同步和互斥_同步与互斥的基本概念(2)
  • 【深度学习新浪潮】大模型在哪些垂域已经有比较好的落地?
  • 基于labview的声音采集、存储、处理