https://yukicoder.me/problems/no/796
解説
https://yukicoder.me/submissions/323223
3つの条件を見たときに、一番制約が厳しいのが最後の条件である。
なるべく小さい数の方が良いので、その方向で考える。
全部1にして、1つだけ3にすれば、下2つの制約はクリアできる。
最後に総和のmod3を見る。
mod3で0ならば、とある1を2にすればいい。
mod3で1なら、なにもしない。
mod3で2なら、とある1を3にすればいい。
int N; int ans[101010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) ans[i] = 1; ans[0] = 3; int sm = 0; rep(i, 0, N) sm += ans[i]; if (sm % 3 == 0) ans[1]++; else if (sm % 3 == 2) ans[1] += 2; rep(i, 0, N) printf("%d%s", ans[i], i == N - 1 ? "\n" : " "); }