模块化算术逻辑,以减少计算

时间:2014-06-14 20:37:57

标签: java modular-arithmetic

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

1 个答案:

答案 0 :(得分:1)

我想我明白你在问什么,在哪种情况下它更像是一个算术而不是一个编程问题,但无论如何它都在这里。 试试一个具体的例子。如果你有i的1到10之间的总和,你要加1 + 2 + 0 + 1 + 2 + 0 + 1 + 2 + 0 + 1你可以看到你有同样的东西你需要做的就是找出它是什么,弄清楚你需要多少次添加它,然后添加最后的剩余位。