[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で解こうとせずに、数学的に解けないかを考える必要がある
[Boot camp for Beginners] B - Count Balls [Rust]