Cover Image for [Boot camp for Beginners] B - Count Balls [Rust]

[Boot camp for Beginners] B - Count Balls [Rust]

概要

AtCoder Problems: Boot camp for Beginners をRustで解いてみる

学んだことmemo

  • 10^100 回繰り返す... これ系は言葉通りに繰り返してはいけないことは学んだ
  • A個の青ボール + B個の赤ボール の組みを延々繰り返すと考えられる
    • 最終的に青をカウントするので、青を 1 赤を 0 とした配列で表せそう
    • 配列としてロジックを考えたが TLE と RE だらけ...
      • TLE は普通に実行時間かかりすぎ
      • RE は多分配列があふれた
    • ダメだったパターンのコード: 提出 #47403406 - AtCoder Beginner Contest 158
  • 配列にせずにカウントできそうなので考え直し
  • N を (A+B) で割った商 に Aをかければ N に含まれる Aの数は出せる
    • あとは N を (A+B) で割った余りを考慮すればいい
    • 余り は A+B より少ない
    • それを前提に余りが A 以上なら A個含まれる
    • 余りが A 未満なら、余りの個数個含まれる
    • ということは A と余りのうち小さい方の個数にすればいい
    • として解けそう
  • 教訓としてはなんでもiterで解こうとせずに、数学的に解けないかを考える必要がある