-2

大きな数の代わりに剰余のみを保持する mod の概念。

計算する式:

=> i=1 から i=N への合計 { i%m }

制約

1 ≤ N ≤ 10^9 1 ≤ m ≤ 10^9

10 ^ 9(大きな数)まで合計する必要がないように、モジュラスをどのように使用できますか。Java コードは、タイムアウトまたは CPU コードが原因で終了し、大きな数値の実行時にエラーが発生します。

CODE: 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);
4

1 に答える 1

1

私はあなたが何を求めているのか理解していると思います.その場合、それはプログラミングの質問というよりも実際には算術的な質問ですが、とにかくここにあります. 具体例を試してみてください。i % 3 の 1 から 10 までの i との合計がある場合、足すものは 1 + 2 + 0 + 1 + 2 + 0 + 1 + 2 + 0 + 1 です。同じものを持っていることがわかります。何度も何度も繰り返しますので、それが何であるかを把握し、追加する必要がある回数を把握し、最後に残りのビットを追加する必要があります。

于 2014-06-15T00:02:03.757 に答える