0

所以我在 SPOJ [ C language] 上解决了一些最初的问题,然后它说要输入一个 500-1000 位的数字。

我所做的是将数据输入一个字符数组并将每个数字存储为一个字符。但是现在,如果我必须对输入进行一些数学计算,我必须将每个输入视为一个字符,然后从中减去 48 [ASCII 为 0],然后逐位解决问题。

有一个更好的方法吗?

4

1 回答 1

3

最大的优化是将数字表示为字节数组,使用基数 256,所以数字是(使用 ^ 作为指数):

N = n[0]*256^0 + n[1]*256^1 + n[2]*256^2 + ...

这样你使用最少的内存。

在现实生活中,您可以使用GMP,这是一个开源的大数库。

于 2013-07-10T09:02:09.040 回答