【问题标题】:How to find remainder?如何找到余数?
【发布时间】:2014-12-06 13:09:22
【问题描述】:

我想找到一个很长的数字的余数。我正在为此编写一个程序,因为我无法直接找到余数,因为它们是大数(在 c 中)。我该怎么做?我必须从中除以更大的数字才能找到余数的数字限制是 500。即 1 到 500 我想过这样划分数字:

1234567=1*10^6+2*10^5+...

1234567%x=1modx*10^6modx+2modx*10^5modx...

我需要比这更好的方法。

【问题讨论】:

  • 我需要一个更具体的答案然后这个:)
  • 使用模运算符 %
  • 请在您的代码中edit,以便我们了解如何提供帮助!
  • 问题是我不能将值存储为整数或长到它的巨大值..现在我有字符串中的值。

标签: java c algorithm math numbers


【解决方案1】:

提示: 使用链表。将数字动态存储为一组数字。 例如:

112233445566778899001122 => 11223344 55667788 99001122

现在考虑单个单元,从左到右开始。找到提醒并操作它以添加到下一个组并继续。

现在实现非常简单:)

编辑:

 112233445566778899001122/6 =>  11223344 55667788 99001122/6


 11223344/6 =>2

 2*100000000 + 55667788 = 255667788
 255667788/6 => 0
 0*100000000 + 99001122 = 99001122
 99001122/6=>0

 So the reminder is 0.

记住,操作后的单个单位应该在int可以支持的最大范围内。

【讨论】:

  • 你能告诉我一些关于操纵的事情吗……这似乎是一项艰巨的任务
  • @user3851486:如果您对答案满意,请点赞:)
  • @user3851486:我也能得到最好的答案吗:P
【解决方案2】:

如果您的问题涉及使用非常长或大的数字,请尝试使用 long long。问题可能是您使用的数据类型太小,无法容纳您需要的值。

您可以尝试使用像 GMP 这样的 bignum 库,或者另一种比较丑陋的方法是使用数组或列表,有点类似于 this

除此之外,模运算% 将为您计算余数。

【讨论】:

  • 它可能包含 10000 个数字。
  • 好的。然后尝试一个大的 num 库。像GMP 这样的东西。也可以查看here 寻求帮助。
  • 我不想使用这样的库。您有其他解决方案吗?
  • 开发人员需要库 @user3851486 有些事情(像这样)没有它们就无法实现。
  • 您可能会使用数组。 this 有帮助吗?
猜你喜欢
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2021-10-26
  • 2011-01-27
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多