Codeforces Round #701 (Div. 2) C. Floor and Mod
限りなく本質に近づいていたのに、そこから40分あっても解けなかった。めっちゃ悔しい。こういうやつを淡々と機械的に詰め切れるようになりたい。
それはそれとしてB問題みたいなこどふぉありがちパズルゲームめっちゃ嫌い。最近気づいたけど、数学ゲーよりパズルゲーの方が時間かかってる気がします。
問題設定
かつのとき、 となるの組の個数を求めよ
解法(自力で行けるところまで)
見た目からしてあからさまに式変形してくださいと言っている問題なので、やる。
とおく。
から、として、
(ただし ) となる。
よって、はの倍数かつ、その係数をとおくと、ということになる。
ここまではまあ来れて、bを一つずつ決め打って全探索してしまえば答えが出ることがわかる。
綺麗に定式化するとこんな感じ。
しかし制約はなので、ナイーブなやり方ではだめ。
ここまで来て解けないのなんだかなあ。
式をよく見ると、となるようなまでは、答えは全部の連番なので、そこまでの計算を省略できる。
めんどくせーとか言いながらにぶたんを書いた。
これでminを考えなくても良くなって、となるようなをとおくと、
の値を後は求めればいい。ここまではコンテスト時間内に来ました。
解説見た
解説見た。そもそもbを固定するのは筋が悪いっぽい。
より、の最大値はとなる。
したがってとなるので、から、である。
要はをまで決め打って求めればいい。
あとは決め打ったときの求め方ですが、頑張って式変形しましょう。
まずの範囲を求めます。
なので、となります。最大値で最小値がなので、の個数はです。
次にの範囲ですが、はとの式で表せます。
からとなるのでの最大値はとなります。
また なのでと置けてとなります。
最大値がで最小値がなので、から求められるの個数はです。
あとはこの小さい方を取れば良く、となるので、解けます。