题目描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入输出格式
输入格式:
一个正整数N。
输出格式:
一个正整数S,表示计算结果。
输入输出样例
输入样例#1:
3
输出样例#1:
9
高精度
屠龙宝刀 点击就送
#include <iostream> using namespace std; int str[201],l=1,n,i,j,s[201]; void xj() { for(int i=1;i<=l;++i) { str[i]+=s[i]; if(str[i]>=10) { str[i+1]+=str[i]/10; str[i]%=10; } } } int main() { s[1]=1; str[1]=1; cin>>n; int t=0; for(i=2;i<=n;++i) { t=0; for(j=1;j<=l;++j) { s[j]*=i; s[j]+=t; if(s[j]>=10) { t=s[j]/10; s[j]%=10; l=max(l,j+1); } else t=0; } xj(); } for(i=l;i>=1;--i) cout<<str[i]; return 0; }