mod的概念只保留余数而不是大数。
计算公式:
=>求和i = 1至i = N {i%m}
约束
1≤N≤10^ 9 1≤m≤10^ 9
如何使用模数以便我们不需要总计10 ^ 9(大数)。 由于超时或CPU代码欺骗导致Java代码终止大数字执行错误。
代码: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);
答案 0 :(得分:1)
我想我明白你在问什么,在哪种情况下它更像是一个算术而不是一个编程问题,但无论如何它都在这里。 试试一个具体的例子。如果你有i的1到10之间的总和,你要加1 + 2 + 0 + 1 + 2 + 0 + 1 + 2 + 0 + 1你可以看到你有同样的东西你需要做的就是找出它是什么,弄清楚你需要多少次添加它,然后添加最后的剩余位。