これの更新式は以下のようになります。1としてしまうのが楽だと思います。ループに入らないようにすれば良いです。なる場合が(定数倍の範囲内ですが)そこそこあり、その時に内側のループに入らないようにしてあげればループ回数がおよそ1億回ほどになり、C++等で通ります。C#でも1300msほどで通りましたが、Python等の言語では厳しいと思います。範囲は連続なので、そこだけループを回すようにしてあげればもう少し早くなります。C#で900msほどになります。詳しくはソースコードを読んでください。追加した時の並べ方の場合の数を数え上げています。4通りだけ調べればOK。720となります(実際に解いた時に用いたメモを紛失したので間違ってるかも...、変なとこあったら教えてください><)あとはこれを落ち着いてコードに起こすと、以下のコードになります。0;}もしこれが想定解法として提示されたら窓からMacBookAirを投げ出すレベルの解法ですが...まぁこんな面倒くさい場合分け、競プロerだとあんまりしないですけど、そこまで競プロになれてない人だと逆にこっちで頑張るのが自然かも、とも思いました。(1)はてなブログをはじめよう!riantkbさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。