如何对 Java 中的大数执行 mod (10^9+7)

How to do mod (10^9+7) for large numbers in Java

编程题一般要求给出结果mod (10^9+7)。参考解释 here.

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

例如如果他们是小数字代码将看起来像

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

如何处理非常大的数字?

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

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

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

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);

输出:

result: 560775910