Java 减少计算量的模算术逻辑

Java 减少计算量的模算术逻辑,java,modular-arithmetic,Java,Modular Arithmetic,mod的概念是只保留余数而不是大数 计算公式: =>总和i=1到i=N{i%m} 约束 一,≤ N≤ 10^9 1.≤ M≤ 10^9 如何使用模数,使我们不必求和到10^9(大数字)。 Java代码在执行大数时由于超时或CPU代码复制错误而终止 代码:k是要打印的求和结果 for (BigInteger bi = BigInteger.valueOf(1); bi.compareTo(N) <= 0; bi = bi.add

mod的概念是只保留余数而不是大数

计算公式:

=>总和i=1到i=N{i%m}

约束

一,≤ N≤ 10^9 1.≤ M≤ 10^9

如何使用模数,使我们不必求和到10^9(大数字)。 Java代码在执行大数时由于超时或CPU代码复制错误而终止

代码:k是要打印的求和结果

for (BigInteger bi = BigInteger.valueOf(1);
                bi.compareTo(N) <= 0;
                bi = bi.add(BigInteger.ONE)){

               k = k.add(bi.mod(m));

             }  
        System.out.println(k);
for(biginger bi=biginger.valueOf(1);

(N)我想我理解你在问什么,在这种情况下,它实际上更像是一个算术问题,而不是一个编程问题,但无论如何,它就在这里。
试一个具体的例子。如果你有一个从1到10的i%3的和,你要加的是它的1+2+0+1+2+0+1。你可以看到你一遍又一遍地做着同样的事情,所以你需要做的是计算出它是什么,计算出你需要加多少次,然后在最后加上剩余的一位。

不要使用
 BigInteger
。10^9的限制是有原因的:这意味着
N
m
都可以安全地存储在32位整数或
int
中。您的最终结果应该适合
长的
。感谢您的评论T.C:我需要学习处理大整数的模运算概念的帮助操作。任何参考都将不胜感激。再次感谢:)感谢发布,执行相同,没有帮助-模块方面的任何其他选项it是否给了您错误的答案,或者它仍然没有完成?