定制化的写了一个. 能计算更小的数值, 更大的就需要考虑变更代码了
#include
#define M 10000
typedef unsigned int BigInt[M];
void check(BigInt n)
{
int i;
for (i = 0; i < M - 1; i++)
while (n[i] >= 10) {
n[i] -= 10;
n[i + 1]++;
}
if (n[M - 1] != 0)
fprintf(stderr"M is too small
");
}
void mul(BigInt n, unsigned int k)
{
int i;
for (i = 0; i < M; i++)
n[i] *= k;
check(n);
}
void add(BigInt n, BigInt m)
{
int i;
for (i = 0; i < M; i++)
n[i] += m[i];
check(n);
}
void print(BigInt n)
{
int i;
for (i = M - 1; i >= 0 && n[i] == 0; i--);
for (; i >= 0; i--)
printf("%d", n[i]);
}
int main(void)
{
BigInt r1 = {1};
BigInt r2 = {1};
int i;
for (i = 0; i < 1300; i++)
mul(r1, 29);
for (i = 2; i <= 800; i++)
mul(r2, i);
add(r1, r2);
print(r1);
return 0;
}
大数运算的时候,一般考虑用数组将每一位的数据存储起来,你可以去网上查一查大数据的运算。
干什么,2089
zhidao.baidu.com/question/166472785.html