確かに130にしかなりませんね。ruby 2.2.3でやってもpython 2.7.10でやっても130ですし、手元で計算しても130にしかなりませんから130でしょう。
私はこうしました。最後の方で243 = 3^5であることを使います。
12371 ≡ -22 mod 243
12371 ^ 2 ≡ 22^2 ≡ -2 mod 243
12371 ^ 56 ≡ 2^28 mod 243
2^8 = 256≡ 13 mod 243
2^16 ≡ 169 ≡ -74 mod 243
2^24 ≡ 13 * (-74) ≡ 10 mod 243
2^28 ≡ 160 mod 243
160 + 34 = 194 ≡ -49
≡ - (3^3 + 2 * 3^2 + 3 + 1) mod 3^5
よって(12371^56 + 34)^28 ≡ (3^3 + 2 * 3^2 + 3 + 1)^28 mod 3^5
ここで、(a + b + c + d)^n の所謂「一般項」は (a^x)(b^y)(c^z)(d^w) n! / (x! y! z! w!) (但しx + y + z + w = n)で今の場合 a= 3^3, b = 2*3^2, ... n=28として、「一般項」の中に3のべきが4以下になるものを探すと、案外数が少ない
*例えば、a = 3^3の所のべきは、0か1しか取れない
* n! / (x! y! z! w!) のところで、約分していく途中分子に 28-1 =27 = 3^3というかなり3のべきの大きい数字が残る事が多く、この事も 「一般項」のなかの3のべきを押し上げる
で、結局
(x, y, z, w) =
(0, 0, 0, 28)
(0, 0, 1, 27)
(0, 1, 0, 27)
(1, 0, 0, 27)
の場合しか結局残らず、
(3^3 + 2 * 3^2 + 3 + 1)^28 ≡ 1 + 3*28 + 2*3^2 * 28 + 3^3 * 28
= 1345 ≡ 130 mod 243
お礼
たしかに、これだとずいぶん簡単ですね。 誤植があってかえって勉強になりました。 ありがとうございました。