この問題は 3重ループ文 を問います。
問題文は、相異なる 3 つの整数 i,j,k (1≤i<j<k≤N) を用いて次のように表せます。
- Ai+Aj+Ak が M の倍数であるような (i,j,k) の選び方はいくつ存在するか?
よって、これは3重ループを用いて実装することができます。したがって計算量は O(N3) で実装が可能です。
またそれぞれ AimodM ※を計算することで O(N2logN) で実装することもできます。以下が解答例です(C++,Python)。
※ AmodB は A を B で割った余りを表します