输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
(题目提供者)
C++的运行时限为:1000 ms ,空间限制为:131072 KB
代码实现:
1 #include2 #define base 10000 3 int n,l=1; 4 int a[base+10]={ 0,1},b[base+10]; 5 void rid(int x){ 6 for(int i=1;i<=l;i++) b[i]=a[i]*x; 7 for(int i=1;i<=l;i++){ 8 a[i]=b[i]; 9 if(a[i]>=base){10 b[i+1]+=a[i]/base;11 a[i]%=base;12 if(i==l) l++;13 }14 }15 }16 int main(){17 scanf("%d",&n);18 for(int i=1;i<=n;i++) rid(i);19 printf("%d",a[l--]);20 for(int i=l;i>0;i--) printf("%04d",a[i]);21 putchar('\n');22 return 0;23 }
题目来源:51Nod