题目链接:https://www.luogu.com.cn/problem/P1009
题目描述用高精度计算出 S = 1! + 2! + 3! + …+ n!(n≤50)。
其中“!”表示阶乘,例如:5!=5×4×3×2×1。
输入格式一个正整数 n。
输出格式一个正整数 S,表示计算结果。
测试样例输入
3
输出
9
解题思路
1.要注意高精度,可能会想到用__int128,但是当你算到45的阶乘是就会发现这个也不够用了,而且算的很慢,不如自己手写一个高精度,我在这里用的是一个一位数组。
2.要注意输出,可能最后结果在数组里有很多空间,也就是数组的前面几位可能都是0,那么这些0是不需要输出的,我们只要从第一个不为0的数开始输出就行了。
AC代码#include
using namespace std;
int a[101],b[101];
//每一个数的阶乘
void mul(int n)
{
int q = 0;
for(int i=100;i>=0;i--)
{
b[i] = b[i] * n + q;
q = b[i] / 10;
b[i] = b[i] % 10;
}
}
//阶乘完之后的加法
void add()
{
int q = 0;
for(int i=100;i>=0;i--)
{
a[i] = a[i] + b[i] + q;
q = a[i] / 10;
a[i] = a[i] % 10;
}
}
int main()
{
int n;
cin>>n;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
a[100] = 1;
b[100] = 1;
//开始计算
for(int i=2;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?