贤鱼的刷题日常--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设计了这样的规则,探讨与此相关的继承和多态的概念,并说明如何在子类中访问和使用父类的成员变量。
ifdown ifup 命令丢失处理
分享一个ifdown ifup 命令丢失处理的案例
ifdown ifup 命令丢失处理
|
应用服务中间件 nginx
流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy 红色标记表示视频设备和麦克风设备 看到乱码了吧!来这里查看哦   FFmpeg编码推送到R...
3732 0
|
11月前
|
Web App开发 JSON JavaScript
爬取王者荣耀图片
【10月更文挑战第11天】爬取王者荣耀图片。
384 2
|
11月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
2258 0
高精度算法(加、减、乘、除,使用c++实现)
|
10月前
|
关系型数据库 MySQL
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
mysql 5.7.x版本查看某张表、库的大小 思路方案说明
228 5
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
394 3
|
JavaScript
js 解析lrc文件(歌词)
js 解析lrc文件(歌词)
212 1
|
存储 关系型数据库 MySQL
【必看】MySQL中float、double、decimal三个浮点数据类型的区别与总结!
你还不知道MySQL中float、double、decimal三个浮点类型的区别吗?快来看看吧!
1183 0
【必看】MySQL中float、double、decimal三个浮点数据类型的区别与总结!