《1!+2!+3!+4!+...+n!》 题解

从O(n²)到O(n):用‘迭代法’优化‘阶乘和’算法,附OpenJudge NOI 1.5 34题解 本文以OpenJudge NOI 1.5 34题为例,详细介绍了如何通过迭代法将阶乘和算法从O(n²)优化到O(n)。通过数学观察和代码实现,展示了算法优化的关键思路,这种技巧在信息学竞赛中具有广泛应用价值,能显著提升计算效率。 阅读详情

描述

请求出1!+2!+3!+4!+…+n!,请注意,n<=50。
n!=nx(n-1)x(n-2)x…x1,如:5!=5x4x3x2x1=120。

这题如果n<=20的话就是简单的求阶乘问题,但是现在n<=50,已经超出long long的范围了,所以我们必须要用高精度来解决;

先定义数组,然后模拟高精度乘法,最后再用一个数组把结果相加,存进来就行了。

下面出示代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
	int n,a[100001],c[100001],len=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        memset(a,0,sizeof(a));
        a[1]=1;
        len=1;
        for(int j=2;j<=i;j++){
            for(int k=1;k<=len;k++){
                a[k]*=j;
            }
            len+=5;
            for(int k=1;k<=len;k++){
                a[k+1]=a[k+1]+a[k]/10;
                a[k]%=10;
            }
            for(int k=len;k>=1;k--){
                if(a[k]==0)len--;
                else break;
            }
        }
        for(int j=1;j<=len;j++){
            c[j]+=a[j];
        }
        for(int j=0;j<len;j++){
            if(c[j]>=10){
                c[j+1]+=c[j]/10;
                c[j]%=10;
            }
        }
        if(c[len])len++;
    }
    for(int i=len;i>=1;i--){
        if(c[i]==0)len--;
        else break;
    }
    for(int i=len;i>=1;i--)cout<<c[i];
    return 0;
}

题解:洛谷 B2153 求阶乘的和 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。的正整数的阶乘的和(即求。输入一行,包含一个正整数。输出一行,表示阶乘的和。本文分享的必刷题目是从。#入门# #语法基础# 阅读详情

相关推荐

题解:AcWing 5906 阶乘和

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。本文分享的必刷题目是从。

团爸讲算法 434

求出1!+2!+3!+4!+...+n!,请注意,n<=50

题目描述 请求出1!+2!+3!+4!+...+n!,请注意,n<=50。 n!=n*(n-1)*(n-2)*...*1,如:5!=5*4*3*2*1=120。 输入 请输入一个整数n(n<=50) #include <bits/stdc++.h> using namespace std; string jiecheng(int n){ char a[300]; a[0]='1'; int len=1; for(int i=2;i<=n;i++)...

zoudingrong的专栏 1910

【PB03F 超详细-环境搭建】蓝牙5.2安信可PB-03F-Kit开发板二次开发环境搭建

PB-03是由深圳市安信可科技有限公司开发的蓝牙模块。本博文介绍安信可PB-03F-Kit开发板的基本情况、开发环境搭建,以及以点亮LED为例介绍程序编写和固件烧录的操作流程。 安信可PB-03F-Kit开发板使用的PHY6252这样一款高集成度的低功耗蓝牙系统级芯片(SoC),专为物联网(IoT)、移动设备、可穿戴电子设备、智能家居等各种应用而设计。......

qq_44078824的博客 1万+

求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。(递归和循环的方法)

题目要求: 1.求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。 一.格式要求: 输入: n 输出: Sn的值 样例输入: 5 样例输出: 153 解题思路: 1.循环方法解决:使用一层for循环,首先将每次需要的累加数保存S,从低位到高位的累加,用sum(注意使用long型或者long long)保存,直至n,注意终止条件是“<=n”; 2.递归的方法解决:使用递归函数计算每个数的阶乘,使用一个for循环计算阶乘数的累加,逐步累加每个数阶乘的结果到总结果中,其实

JUSTLOVEBOY的博客 1万+

[Linux外设驱动详解]RK3588 U-Boot网络功能深度分析

本文深入分析了RK3588平台上U-Boot的网络功能实现,主要内容包括: 网络架构:详细剖析了从硬件层到协议层的完整网络栈架构,包括GMAC驱动、TFTP/NFS启动、网络命令等关键组件。 驱动实现:重点介绍了RK3588 GMAC驱动结构,包含关键数据结构、专用操作函数集、设备树兼容性配置和GRF寄存器设置。 功能实现:详细说明了驱动初始化流程、RGMII速度适配机制以及PHY接口配置过程。 高级特性:涵盖了网络启动功能、镜像更新和MAC地址传递到Linux内核的机制。 文档通过代码片段和流程图清晰展示

Just Linux! 1113

DIY一个SM2262ENG 2TB Nvme固态硬盘,慧荣SM2262EN主控

网友订做的 材料: 慧荣科技的62en,2片1G 三星DDR4缓存,4颗PF29F04T2AOCTH1,8CE B17A。SM2262EN属于慧荣第二代PCIe SSD主控,支持PCIe G3×4通道和全新的NVMe 1.3规范、8个NAND通道设计,并提供完整固件设计,最大循序读取速度高达3.5GB/s,循序写入速度达3.0GB/s,随机读写则高达420K IOPS和420K IOPS。此外,还采用目前最先进的低功耗设计,无论是在待机还是在工作状态下,均展现超低功耗,有效减少30%的功耗,满足用户追求超

m0_55207244的博客 1万+

阶乘数列求和:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。

阶乘数列求和:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。

qq_62664008的博客 6545

2篇1章1节:数据的基本概念以及 R 中的数据结构、向量与矩阵的创建及运算

本文详细介绍了R语言中常见的数据结构的向量和矩阵。通过掌握这些数据结构的基本概念和操作技巧,可以更高效地处理和分析数据。

MD Code 1243

【编程基础】012.求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)

求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。

热爱技术,热爱生活 3179

uniapp:实现APP获取陀螺仪数据、加速传感器、线性加速传感器,uniApp实时监听陀螺仪【XYZ】数据及停止监听与资源释放等功能示例源码,根据需求做功能(完美兼容Android安卓、苹果ios)

uniapp陀螺仪,uniapp加速传感器,uniapp线性加速传感器,APP陀螺仪数据,uniapp app 端获取陀螺仪数据示例代码,手机中获取陀螺仪的数据,uniApp实时获取陀螺仪xyz数据,android陀螺仪方向,获得陀螺仪传感器,处理传感器数据,停止监听与资源释放,Android使用陀螺仪,uniapp苹果ios陀螺仪,uni-app设备之(加速计,罗盘,陀螺仪)插件安卓/IOS APP提供了获取陀螺仪数据的能力,手机陀螺仪传感器获得手机自身旋转的角度,陀螺仪获取旋转角度,陀螺仪、加速度传感器

✅ 精选推荐文章 4266

华为OD机试真题 新系统 2026-04-22 C++ 实现【小学生班长选举增强版】

9 月份开学第一天,小学某班级进行班长选举活动,班级共有 N 个学生,每个学生最多可投 3 票(对同一个人只能投一票),也可以弃权不投票,大家投票时写上对应学生的名字。 假设学生不存在重名。考虑到部分少数民族名字带分隔,且整体较长,同学在投票时为了方便,允许同学写全称,也可以只写其中的部分连续段。 例如班级里只有 2 个少数民族名称带点的同学:

MISAYAONE的博客 167

【C语言】解决n!和求1!+2!+3!+......+n!问题;求前n项和c语言

文章解决问题: 本文章使用C语言解决n!(求一个数的阶乘);求 1!+2!+3!+4!......+n! 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一:求n!问题 二:求 1!+2!+3!+4!......+n! 总结 前言: 1,本篇文章使用C语言实现解决方案,分别运用for循环,while循环,do..while循环实现解决这一问题 2,使用VS2019平台 一:求n!问题 ***********头文件************.

优快云博客 2万+

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 497

东方博宜OJ(高精度运算1296)(求1!+2!+3!+4!+...+n!)

给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。第一行是两个整数,RR 和 CC ,代表迷宫的行数和列数。( 1≤R,C≤401≤R,C≤40 )一个迷宫由 RR 行 CC 列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。接下来是 RR 行,每行 CC 个字符,代表整个迷宫。表示,有障碍物的格子用。计算步数要包括起点和终点。迷宫左上角和右下角都是。

2401_86810542的博客 549

系统盘被 1Panel 撑爆了?一键脚本 3 分钟搞定无损迁移!(1Panel如何快速无损的修改安装目录)

很多用户因默认安装导致 1Panel 面板占满系统盘 😱,本文详解了为何常规快照迁移会失效,并提供了通过**一键自动化脚本**实现无损迁移的完美方案 🛠️。无论你是 NAS 用户还是服务器管理员,都能找到安全扩容的最佳实践。

XiaoqiangClub的博客 1279

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

c语言用高精度计算出s=1!+2!+3!+…+n!(n≤50),ACM 阶乘之和

【ACM 阶乘之和】的更多相关文章阶乘之和 时间限制:3000ms | 内存限制:65535KB 难度:3 描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3!,如果是,则输出Yes,否则输出No: 输入 第一行有一个整数0阶乘之和 时间限制:3000ms | 内存限制:65535KB 难度:3 描述 给你一...

weixin_35725147的博客 3524

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

求1!+2!+3!+......+n!

求1!+2!+3!+......+n! 谭浩强教授版《C程序设计》(第二版)P120 6.4求∑n!(即求1!+2!+3!+......+20!)。 我把它改为由键盘输入n。 #include int main() { int i,j,n; printf("请输入n:"); scanf("%d",&n); fflush(stdin); float jiecheng

qslife的专栏 3237

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

第4章-26 求1!+3!+5!+……+n! (10分) PTA-python 题解 浙大版《Python 程序设计》题目集

致读者: 博主是一名数据科学与大数据专业大三的学生,一个互联网新人,这篇文章是记录我作为python助教总结的简单题解,写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者。 由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!之后会写大数据专业的文章哦。 GitHub链接https://github.com/wfy-belief 尽管现在我的水平可能还不太及格,但我会尽我自己所能,做到最好☺。——天地有正气,杂然赋流形。下则为河岳,.

ZZULI_星.夜 1686

C++ 2033:阶乘之和(史上最详细题解)

​#include #include #include #include #include using namespace std; int main() { long n,s=0,m=1; cin>>n; for(int i=1; i

geekprand的博客 3811

浙大PTA 第4章-26 求1!+3!+5!+……+n! (10 分)

求1!+3!+5!+……+n!的和,要求用循环嵌套设计,n<12。 输入格式: 输入在一行中给出一个不超过12的正整数n。 输出格式: 在一行中按照格式“n=n值,s=阶乘和”的顺序输出,其中阶乘和是正整数。 输入样例: 5 输出样例: n=5,s=127 题解: import math n=int(input()) sum = 0 i = 1 while i<=n: sum+=math.factorial(i) i+=2 print(f'n={n},s

amateur_python的博客 1172

[PTA]实验2-4-4 求阶乘序列前N项和

本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。

春天熊的技术博客 961

p1009 python3 题解

表示阶乘,定义为 n!注意编写递归时要加上终止条件 递归本身就自带类似循环的效果,所以再递归中最好不要使用for while之类的做终止条件。用高精度计算出 S=1!(n≤50n≤50)。思路:使用递归编写一个阶乘的函数 再在主函数调用函数进行求和。一个正整数 SS,表示计算结果。

Morantkk的博客 419

【高精度】阶乘之和 C++题解

题目描述: 用高精度计算出S = 1! + 2! + 3! + …… + n!(n≤50)。 其中“!”表示阶乘,例如:5! = 5 × 4 × 3 × 2 × 1。 输入格式: 一个正整数n。 输出格式: 一个正整数S,表示计算结果。 样例输入: 3 样例输出: 9 代码: #include<bits/stdc++.h> using namespace std; #define MAX 2005 int a[MAX],b[MAX],c[MAX],sum[MAX...

zhnluorizhijian的博客 3520

阶乘之和(题解)(高精度计算)

表示阶乘,定义为n!用高精度计算出 S=1!对于100% 的数据,1≤n≤50。一个正整数 S,表示计算结果。

hb_zhyu的博客 630

洛谷题解P1009阶乘之和---C++

P1009阶乘之和 题目 题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5×4×3×2×15!=5 输入格式 一个正整数N。 输出格式 一个正整数S,表示计算结果。 样例输入输出 输入:3 输出:9 解题思路 主要算法 高精度算法 高精度算法是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘

xiao_bai_12138的博客 996

【已解决】C语言输入实数x和正数eps计算多项式1-x+...

刚才同学问我一道C语言题目,我接过来,然后想了一下,觉得写下这个题解。如果大家有需要可以点赞收藏。也可以观望一二。3、 输入实数x和正数eps,计算多项式 $1-x+\frac{x^2}{2!}-\frac{x^3}{3!}+\frac{x^4}{4!}-\frac{x^4}{4!}+\frac{x^5}{5!}...$的和,直到末项的绝对值小于eps为止。

执念斩长河 3247
上一篇: 《Pell数列》 解析(点我主页看水题解)
下一篇: 《计算N的阶乘》 题解
jiabei2012
博客等级 码龄3年 566粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值