Isa@Diary

ソフトウェア開発やってます。プログラミングとか、US生活とかについて書きます。

AOJ 2353:Four Arithmetic Operations

方針

制約が大きい…JavaならBigIntegerを使えばよいかもしれない。
2^32より大きいmodを使うとlong longでもoverflowする可能性があるので
10^5((10^5)^2 >= 10^9.6≒2^32)程度のmodを素数を2個使ってmod取って計算した後で中国剰余定理を使って元に戻せばよい。
(uwiさん指摘ありがとうございました。)

あと気をつけることは

  • 減算:

負のmodにならないように
t1 = (t1 + m1 - y%m1)%m1;
とする

  • 除算:

逆元を掛ける

というところだと思う。