贤鱼的刷题日常--P1009 [NOIP1998 普及组] 阶乘之和--详细题解

简介: 🍀学会阶乘之和题目
🏆今日学习目标:
🍀学会阶乘之和题目
✅创作者:贤鱼

请添加图片描述

题目

用==高精度计算==出 !S=1!+2!+3!+⋯+n!(0n≤50)。
其中 ! 表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。
输入格式
一个正整数 n。
输出格式
一个正整数 S,表示计算结果。
输入输出样例
输入 #1复制
3
输出 #1复制
9
说明/提示
【数据范围】
对于 100% 的数据,1≤n≤50。

代码

50分代码

#include<cmath>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,ans;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int s=1;
        for(int j=1;j<=i;j++){
            s*=j;
        }
        ans+=s;
    }
    cout<<ans;
}
这个应该是最基础的做法了,但是对于洛谷上只能拿到一半的分

AC代码

#include<cmath>
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,ans,a[1001],b[1001];
void c(int x){//高精度乘法
    int g=0;
    for(int i=100;i>=0;i--){
        a[i]=a[i]*x+g;//直接乘
        g=a[i]/10;//进位
        a[i]%=10;//取出余数,相当于进位完剩下的
    }
}
void j(){//高精度加法
    int q=0;
    for(int i=100;i>=0;i--){
        b[i]+=a[i]+q;//这里直接加
        q=b[i]/10;//进位处理
        b[i]%=10;//同上
    }
}
int main(){
    cin>>n;
    a[100]=b[100]=1;
    for(int i=2;i<=n;i++){
        c(i);
        j();
    }
    int xy=0;//这里需要单独判断一下计算完的数字长度
    for(int i=0;i<=100;i++){
        if(b[i]){

        xy=i; break; 
    }
    }//以下直接输出就好
    for(int i=xy;i<=100;i++){
        cout<<b[i];
    }
}

高精度计算

高精度加法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

高精度乘法

在这里插入图片描述

以此类推

在这里插入图片描述

最后相加就好了

==🏆如果对您有帮助的话可以订阅一下专栏,持续跟新==

请添加图片描述

相关文章
继承与隐藏:Java中父类成员变量的神秘禁忌
本文将解释为什么Java设计了这样的规则,探讨与此相关的继承和多态的概念,并说明如何在子类中访问和使用父类的成员变量。
|
2月前
|
JSON 数据可视化 物联网
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
随着物联网(IoT)技术的发展,实时数据监测系统逐渐成为日常生活和工业环境中不可或缺的组成部分。其中,气象监测系统不仅可以提供温度、湿度、天气状况等信息,还可以通过数据分析为农业、城市管理和个人生活提供智能化建议。本项目以STM32F407为核心控制器,结合FreeRTOS实时操作系统和ESP8266 Wi-Fi模块,实现一套高可靠、实时更新的智能气象监测系统。同时,系统集成了计时功能,通过串口屏将实时数据可视化展示,为用户提供直观的操作体验。
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
ifdown ifup 命令丢失处理
分享一个ifdown ifup 命令丢失处理的案例
ifdown ifup 命令丢失处理
|
应用服务中间件 nginx
流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy 红色标记表示视频设备和麦克风设备 看到乱码了吧!来这里查看哦   FFmpeg编码推送到R...
3807 0
|
Web App开发 JSON JavaScript
爬取王者荣耀图片
【10月更文挑战第11天】爬取王者荣耀图片。
559 2
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
2574 0
高精度算法(加、减、乘、除,使用c++实现)
|
11月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
255 5
|
11月前
|
负载均衡 算法 Go
GoLang协程Goroutiney原理与GMP模型详解
【11月更文挑战第4天】Goroutine 是 Go 语言中的轻量级线程,由 Go 运行时管理,创建和销毁开销小,适合高并发场景。其调度采用非抢占式和协作式多任务处理结合的方式。GMP 模型包括 G(Goroutine)、M(系统线程)和 P(逻辑处理器),通过工作窃取算法实现负载均衡,确保高效利用系统资源。
248 3
|
人工智能 数据挖掘 决策智能
跟着我的步骤,轻松打造出 AI 智能体
跟着我的步骤,轻松打造出 AI 智能体
479 3
跟着我的步骤,轻松打造出 AI 智能体
|
数据采集 编解码 数据可视化
空间单细胞|10x Visium数据分析、可视化与整合(1)
空间单细胞|10x Visium数据分析、可视化与整合(1)