0

100桁の数字が与えられたとしましょう(入力は文字列にすることができます)。その数値%modの値を見つけたいと思います。ここで、modは10 ^ 9+7です。どうすれば答えを得ることができますか。文字列操作を使用して、多数の加算および減算関数をすでに実装しました。

前もって感謝します !

4

1 に答える 1

2

109は-1000000007を法とする-7です。

100桁の数字を右からN9桁のブロック(0、a 1 、...)に分割します。我々は持っています:

N = a0 + a1*10^9 + a2*10^18 + ...

モジュラスは0-7 * a 1 + 49 *a2- ..です。

たとえば、87564875326485487234854862386245865486238654862をモジュロ1000000007で計算するとします。この数字の文字列を、右から9のブロックに分割します。

  • a 0 = 238654862
  • a 1 = 245865486
  • a 2 = 245865486
  • a 3 = 854862386
  • a 4 = 485487234
  • a 5 = 564875326
  • a 6 = 87

ここで、各ブロックを整数に変換し、m = a 0-7 * a 1 + 49 * a 2-323 * a 3 + ...を計算します(ヒント:64ビット整数を使用してください)。

N = m (mod 1000000007)

于 2013-03-01T17:27:04.147 に答える