51NOD 1057 N的階乘
阿新 • • 發佈:2017-08-06
open () 空間 階乘 基礎 panel ++ image lose
1057 N的階乘
基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題
輸入N求N的階乘的準確值。
Input
輸入N(1 <= N <= 10000)Output
輸出N的階乘Input示例
5Output示例
120
#include <bits/stdc++.h> #define clear(a) memset(a,0,sizeof(a)) using namespace std; typedef long long ll; const int mod = 1e8; ll s[階乘模擬10010]; int main () { int n; while (~scanf("%d",&n) ) { clear(s); int m =0; s[0] = 1; for(int i=1;i <= n;i++) { int c = 0;//c表示最高位所留下的 相當於模擬乘法把 for(int j=0;j <= m;j++) { s[j] = s[j]*i + c; c= s[j] /mod; s[j] %= mod; } if(c > 0) { m++; s[m] = c; } } printf("%lld",s[m]); for(int i=m-1;i >= 0;i--) printf("%08lld",s[i]); puts(""); }return 0; }
51NOD 1057 N的階乘