c语言中怎么计算前20个数的阶乘和(初级编程高精度计算题)(1)

时间限制: 1 Sec 内存限制: 128 MB

题目描述

已知正整数n(n<=100),设s=1! 2! 3! ... n!。其中“!”表示阶乘,求s。

c语言中怎么计算前20个数的阶乘和(初级编程高精度计算题)(2)

输入

n

输出

s

样例输入 Copy

4

样例输出 Copy

33

c语言中怎么计算前20个数的阶乘和(初级编程高精度计算题)(3)

V

V

V

V

V

V

V

V

解答:

#include<bits/stdc .h> using namespace std; short s[10005]; short ans[10005]; void jc(int n) { s[1]=1; int t=1; int x; for(int i=1;i<=n;i ) { x=0; for(int j=1;j<=t;j ) { s[j]=s[j]*i x; x=s[j]/10; s[j]%=10; if(x>0&&j==t) t ; } s[t 1]=x; } } int main(){ int n; cin>>n; int x; for(int j=1;j<=n;j ) { memset(s,0,sizeof(s)); jc(j); for(int i=1;i<=10000;i ) { ans[i] =s[i];//cout<<c[i]<<" "; if(ans[i]>=10) { ans[i 1] ; ans[i]=ans[i]; } } } int t1=10000; while(ans[t1]==0&&t1>1) t1--; for(int i=t1;i>=1;i--) { cout<<ans[i]; } return 0; }

,