51nod 1057 N的阶乘 (大数运算)
输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
压位: 每个数组元素存多位数字
1 #include <cstdio> 2 #include <string> 3 #include <cstring> 4 #include <algorithm> 5 #include <iostream> 6 #include <cmath> 7 using namespace std; 8 #define pi 3.1415926 9 #define e 2.718281828459 10 #define ll long long 11 const int mod=1e8; 12 const int N=10000; 13 int main() 14 { 15 int n,i,j,m; 16 ll a[N]={1},c; 17 scanf("%d",&n); 18 m=0; 19 for(i=1;i<=n;i++){ 20 c=0; 21 for(j=0;j<=m;j++){ 22 a[j]=a[j]*i+c; 23 c=a[j]/mod; 24 a[j]%=mod; 25 } 26 if(c>0){ 27 m++; 28 a[m]=c; 29 } 30 } 31 printf("%lld",a[m]); 32 for(i=m-1;i>=0;i--) 33 printf("%08lld",a[i]); 34 printf("\n"); 35 return 0; 36 }