如何在Java中为大数字做mod(10 ^ 9 + 7)

时间:2017-03-06 14:05:15

标签: java biginteger bigdecimal

编码难题一般要求给出结果mod(10 ^ 9 + 7)。请参阅说明here

假设我有一个非常大的数字;说2个大字符串的数字字符。我需要添加它们并将结果处理为mod(10 ^ 9 + 7)。我怎样才能做到这一点。

e.g。如果它们是小数字代码将看起来像

    Integer a = Integer.parseInt("123456474575756568568786786786786783453453");
    Integer b = Integer.parseInt("456534543654564567567567567567564564456");
    Integer result = (a+b)%(10^9+7);
    System.out.println("result"+result);

如何对非常大的数字做同样的事情?

df = pd.DataFrame({'price':[10,10,30,15], 'type':['abc','def','abc','def']})

   price type
0     10  abc
1     10  def
2     30  abc
3     15  def

在这种情况下,需要使用Integer以外的东西,并且应该执行“add”,“modulo”操作。

在这种情况下,我无法轻易使用BidInteger,BigDecimal。请建议。

1 个答案:

答案 0 :(得分:2)

BigInteger并不是那么糟糕,它完全符合您的需求:

BigInteger a = new BigInteger("123456474575756568568786786786786783453453");
BigInteger b = new BigInteger("456534543654564567567567567567564564456");
BigInteger result = a.add(b).mod(BigInteger.TEN.pow(9).add(BigInteger.valueOf(7)));
System.out.println("result: " + result);

输出:

  

结果:560775910