PE32
今回は計算量削減でかなり頭を抱えた。
愚直に回したのでは、超ハイパーウルトラアルティメットPCを組まない限り、
通常のPCでは終わらないようなとてつもない数の組み合わせを
試さなければならない。
寝起きにボーッとしていたらふと気がついた。
1~9の数字をそれぞれ必ず1度だけ使わなければならないので、
の式で、 となる。
(当然といえば当然である)
これをもとにループ範囲を制約して実装し、正解を出せた。
実装面でも少し苦戦。
最初に正解を出したコードでは1分10秒弱かかり、1分ルールを超えてしまった。
これは、Pythonのitertools.permutationsのような
長さ指定ありの順列取り出しのやり方が分からなかったので、
順列の重複を前提として、そのまま出た結果(積)の重複を
unordered_setで除くような実装だったためである。
順列取り出しのループの重複を除くよう実装し直したところ2秒で終わった。