https://beta.atcoder.jp/contests/summerfes2018-div2/tasks/summerfes2018_c
考察過程
1. とてもむずかしい問題に見える
2. なるべく難度を落として考えてみると、サンプルが怪しいことになっている
3. 答えと一例が等しくなっている
4. もしかして全部同じ結果になるのでは?
5. AC
解法
https://beta.atcoder.jp/contests/summerfes2018-div2/submissions/3070776
エスパーで通してしまった。
どのような順番で計算をしても結果が同じになるため、ある1通りをシミュレーションして答える。
mod系はよく事故るので、このような簡単なケースでも、mintを用意するのをおすすめする。
int N, A[1010101]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; rep(i, 1, N) { mint a = A[i - 1]; mint b = A[i]; mint c = a * b + a * 2 + b * 2 + 2; A[i] = c.get(); } cout << A[N - 1] << endl; }