【问题标题】:How to Store integer of range 10^100 in C? [duplicate]如何在C中存储范围为10 ^ 100的整数? [复制]
【发布时间】:2020-03-28 04:41:59
【问题描述】:

如何在 C 中将整数值存储在 10^100 中? 我试图在竞争中解决一个问题,输入数据在 10^100 范围内,甚至超过了 unsigned long int 的数据大小限制。如何存储和处理它?

【问题讨论】:

标签: c dynamic-programming computer-science generic-programming


【解决方案1】:

Blaze 的评论很到位。这是对同一想法的更理论化的阐述。

最大 10^100 的整数可以用 100 位或更少位的 base-10 表示法编写(好吧,数字 10^100 本身是 101 位)。我们可以将这些整数的基数为 10 的表示形式存储为长度不超过 100 的字符串(如果在 10^100 侧包含 101)。你在学校学到的简单算术运算——进位加法、借位减法、长乘法和长除法等——实际上是数字字符串的算法,所以这些可以在代表高达 10^100 及以上数字的字符串上实现.字符串的长度至少可以达到 ~2^16 个符号,如果您不要求一次将整个内容放在一个字符串变量中,则可能更多。如果您需要无法以这种方式表示的以 10 为底的表示形式的数字 - 通过将以 10 为底的表示形式存储在字符串集合中 - 祝你好运!

【讨论】:

  • 只要内存可用,C 中的字符串可以有任意长度。 2^16 个字符没有限制。或者你还有什么意思?
  • @thebusybee 不,这就是我的意思,我认为你说得对,这不是一般的限制。我添加了“至少”,因为我不确定,实际上我什至没有注意到 c 标签,直到你提到它。
猜你喜欢
  • 2021-04-01
  • 2017-08-14
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多