不是吧这时候了,有人竟然忘了怎么用高精度,不是,用高精度求阶乘和再简单不过了好吧,话不多说,上题目,对了,我马上建一个c++专栏,不用付费哦!
时间限制: 1000 ms 内存限制: 65536 KB
提交数:26693 通过数: 13406
【题目描述】
用高精度计算出S=1!+2!+3!+…+n!(n≤100)𝑆=1!+2!+3!+…+𝑛!(𝑛≤100),其中“!!”表示阶乘,例如:5!=5×4×3×2×15!=5×4×3×2×1。
输入正整数n𝑛,输出计算结果S𝑆。
【输入】
一个正整数n𝑛。
【输出】
计算结果S𝑆。
【输入样例】
5
【输出样例】
153
code:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[35665]={0},b[35665]={0},i,n,t,h=1;
cin>>i;
a[0]=b[0]=1;//初始化
for(n=2;n<=i;n++){
for(t=0;t<h;t++)a[t]*=n;//每个数乘上n
for(t=0;t<h;t++){
if(a[t]>9){
if(t==h-1)h++;
a[t+1]+=a[t]/10;
a[t]%=10;
}
}//计算n的阶乘
for(t=0;t<h;t++){
b[t]+=a[t];
if(b[t]>9){
b[t+1]++;
b[t]-=10;
}
}
}
for(n=h-1;n>=0;n--)cout<<b[n];
return 0;
}