D - Multiple of 2019

  • image
  • 考えたこと
    • iからjまでの範囲の余りが既知なら、10倍して一桁足して余りを取るのは定数時間
    • だけど各開始点についてのあまりを待つと全体で二乗のオーダー
    • だからここを定数の幅の頻度表にすれば良い
    • 未AC
  • 公式解説
    • 少し違うアプローチ
    • 範囲に対する演算を累積和と逆演算でやるのに似てる
      • それ自体は考察の時に少し考えたがダメだと勘違いした
      • image
        • 10の累乗部分が邪魔で使えない、と早合点
      • 右から累積ではなく左から累積
        • 数列ではなく数の桁なのでその方が自然

        • image

        • この問題ではxの余りが0かどうかにしか興味がない

        • 10の累乗の掛け算は、10が2019と素だから無視できる

    • 左から累積→頻度→三角数