#include <bits/stdc++.h>
using namespace std;
typedef int INT;
const INT BASE = 1000000;
const int N = 1000;
INT digits[N];
int main()
{
int n;
while(scanf("%d", &n) != EOF) {
memset(digits, 0, sizeof(digits));
digits[0] = 1;
int len = 1;
for(int i = 2; i <= n; i++) {
INT carry = 0;
for(int j = 0; j < len; j++) {
digits[j] = digits[j] * i + carry;
carry = digits[j] / BASE;
digits[j] %= BASE;
}
if(carry)
digits[len++] = carry;
}
printf("%d!\n", n);
printf("%d", digits[len - 1]);
for(int i = len - 2; i >= 0; i--)
printf("%06d", digits[i]);
printf("\n");
}
return 0;
}
高精度阶乘
最新推荐文章于 2023-09-22 23:14:56 发布