問題描述
輸入一個正整數n,輸出n!的值。
其中n!=1*2*3*…*n。
算法描述
n!可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數a,A[0]表示a的個位,A[1]表示a的十位,依次類推。
將a乘以一個整數k變爲將數組A的每一個元素都乘以k,請注意處理相應的進位。
首先將a設爲1,然後乘2,乘3,當乘到n時,即得到了n!的值。
輸入格式
輸入包含一個正整數n,n<=1000。
輸出格式
輸出n!的準確值。
樣例輸入
10
樣例輸出
3628800
*/
#include<stdio.h>
int main(void)
{
int i ,j , n,s ,c = 0 ;
int a[3000]={ 0 };
scanf("%d",&n);
a[0] = 1;
for( i = 1 ; i <= n ; i ++)
{
for( j = 0 ; j < 3000 ; j ++)
{
s = a[j] * i + c ;
c = s / 10 ;
a[j] = s % 10 ;
}
}
for( j = 3000 -1 ; j >= 0 ; j --)
{
if( a[j] != 0)
{
break ;
}
}
for( i = j ; i >= 0 ; i --)
{
printf("%d",a[i]) ;
}
return 0;
}