【问题标题】:Input of integer in the range of 10^1000 [duplicate]输入 10^1000 范围内的整数 [重复]
【发布时间】:2014-09-05 09:54:34
【问题描述】:

是否可以接受比 C/C++ 提供的范围更大的输入?是否可以接受大于 unsigned long long 的输入范围,甚至更大到 10^1000 的范围? 如果在 C/C++ 中可以,请回答如何实现,谢谢。

【问题讨论】:

  • 是的,完全有可能使用支持它的字符串或大整数。
  • 使用std::string/std::vector<char> 或特定库?
  • unsigned long long 不能将 10^1000 作为输入!
  • 没有数据类型来保存这样的值。但是,您可以将它们存储到字符向量中,然后编写自己的操作函数。
  • @Sathish, log10(2⁶⁴) 是 19 岁。这还远远不够。您的 unsigned long long 必须非常宽。

标签: c++ c biginteger


【解决方案1】:

C 或 C++ 中没有 bigint,但是像这样的库可以提供它:https://code.google.com/p/infint/

【讨论】:

  • 我认为“模拟”在这里不是合适的动词。它提供 bigint 功能。
  • 大声笑,C+++?你可能想写C++
  • @CollioTV 谢谢,但你能指导我如何为我的编译器设置这个名为 InfInt.h 的头文件,我正在使用代码块,当我将这个头文件粘贴到这个(C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.8.1\include) 路径,编译器仍然无法识别头文件。
  • 我真的很抱歉,但我没有开发代码块......我真的不知道如何在这个 ide 上导入库! @Jongware 对不起,英语不是我的母语,所以我经常犯这样的错误
  • 完全没有问题,完全不需要道歉!我们还是明白你的意思。就英语而言,“练习,练习,练习”,我认为这是一个很好的地方! (您可能会发现您的答案可能会得到改进,因为有人编辑了您的帖子。在这种情况下,我认为指出差异是明智的;“模拟”是编程中的一个有效术语,但它意味着其他东西。)
【解决方案2】:

输入字符串。然后将字符串转换成想要的类型。

如果您使用为大整数提供类型的库,则此类库可能还提供输入函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多