您的位置首页百科问答

问一个c语言的题,大数运算,计算29^1300+800!

问一个c语言的题,大数运算,计算29^1300+800!

定制化的写了一个. 能计算更小的数值, 更大的就需要考虑变更代码了

#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