B]競技プログラミングhttps://atcoder.jp/contests/acl1/tasks/acl1_b解説https://atcoder.jp/contests/acl1/submissions/169236881h考えてmodのもの字も出てこなかった...大学受験で出てきそうな問題。言い換えこの言い換えはできた。(1+2+...+K)=aNK(K+1)/2=aNK(K+1)=2aNこれを満たす最小のKが答えになる。約数で分割する右辺の2aNをKとK+1に分割するようなイメージ。aは倍数ということで勝手につけたものなので、そこではなく固定されている2Nを起点に考える。2Nを素因数分解したときに、その素因数がKとK+1に分かれることになる。どのように分かれるかというのはわからないので、ここは全探索することにしよう。実際は素因数というより約数で考える方がスムーズ。2Nの約数xがKに属する、もう片方のy=2N/xがK+1に属すると考える。注意するべきなのは、「属する」というのは倍数になるという部分である。結局、倍数じゃないか。modで考えるさっきのように変数aを使うのではなく、modを使って倍数を対処しよう。x)と考えることができる。modが分かれば何となく分かるだろう。y)と考えることができる。これで2つの合同式が得られた訳だが、合同式から元の数を復元する方法がある。CRT中国人剰余定理の頭文字。内容については、ググってもらうことにして、2つの合同式があれば、変数の値を復元できる。Wikipediaここの補助定理にもあるようにx,yが互いに素であれば一意に存在する。全パターンの中に互いに素となるものがあるので問題ない。あと、連続する2つの整数は互いに素であることが言えるので、答えを導けるx,yも互いに素である必要があるってのもある。3引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。