Java 减少计算量的模算术逻辑
mod的概念是只保留余数而不是大数 计算公式: =>总和i=1到i=N{i%m} 约束 一,≤ N≤ 10^9 1.≤ M≤ 10^9 如何使用模数,使我们不必求和到10^9(大数字)。 Java代码在执行大数时由于超时或CPU代码复制错误而终止 代码:k是要打印的求和结果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
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是否给了您错误的答案,或者它仍然没有完成?