1. 程式人生 > >51NOD 1057 N的階乘

51NOD 1057 N的階乘

open () 空間 階乘 基礎 panel ++ image lose

1057 N的階乘技術分享 基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題 輸入N求N的階乘的準確值。 Input
輸入N(1 <= N <= 10000)
Output
輸出N的階乘
Input示例
5
Output示例
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的階乘