#include<stdio.h>
#include<string.h>
struct bignum
{
int digit[1001];
int size;
void init()
{
for (int i = 0; i <= 1000; i++)
digit[i] = 0;
size = 0;
}
void set(int x)
{
init();
do {
digit[size++] = x % 10;
x = x / 10;
} while (x != 0);
}
void output()
{
for (int i = size - 1; i >= 0; i--)
printf("%d", digit[i]);
printf("\n");
}
}a;
bignum cheng(bignum a, int b)
{
bignum c;
c.init();
int carry=0;
for (int i = 0; i < a.size ; i++)
{
int temp = a.digit[i] * b + carry;
carry = temp / 10;
temp = temp % 10;
c.digit[c.size++] = temp;
}
if (carry)
c.digit[c.size++] = carry;
return c;
}
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
a.set(1);
for (int i = 1; i <= n; i++)
a = cheng(a, i);
a.output();
}
return 0;
}
计算较大的阶乘(20以内)
最新推荐文章于 2022-07-13 18:36:59 发布