2022-07-15 ABC164 の A, B, C, D を解いた
ABC164 : AtCoder Beginner Contest 164 の A, B, C, D を解いた。
- A - Sheep and Wolves
https://atcoder.jp/contests/abc164/tasks/abc164_a
- 提出: https://atcoder.jp/contests/abc164/submissions/12572453
if w >= s { "unsafe" } else { "safe" }
- B - Battle
https://atcoder.jp/contests/abc164/tasks/abc164_b
- 提出: https://atcoder.jp/contests/abc164/submissions/33238338
- 高橋君のモンスターが攻撃に耐えられる回数と青木君のそれを比較する
- 回数は切り上げするので
(A + B - 1) / B
の形で計算する if ((a + d - 1) / d) >= ((c + b - 1) / b) { "Yes" } else { "No" }
- C - gacha
https://atcoder.jp/contests/abc164/tasks/abc164_c
- 提出: https://atcoder.jp/contests/abc164/submissions/33238382
- HashSet に入れて数えれば良い
a.into_iter().collect::<HashSet<_>>().len()
- D - Multiple of 2019
https://atcoder.jp/contests/abc164/tasks/abc164_d
- 提出: https://atcoder.jp/contests/abc164/submissions/33238948
- 急に難しい
2019
の倍数の判定なのでmod 2019
で考えれば良いS
の下から i 桁目の数は10^{i-1} * S_{N-i}
だ10^{i-1}
部分もmod 2019
しながら下の桁から順に計算してある桁のmod 2019
を得られるi
桁目からj
桁目の和を高速に求めるために累積和T
をとる(T_j - T_{i-1}) % 2019 == 0
なら良いのでT_j == T_i
となる組の個数を数えれば良い- これは
T_i
ごとの出現回数を数えて、各出現回数から 2 個を選び取る場合の数を求めれば良い - 出現回数を
x
とするとx * (x - 1) / 2
で求められる - それらの和が答えになる
- E - Two Currencies
https://atcoder.jp/contests/abc164/tasks/abc164_e
- 解けそうだけど時間がないのでパス
今日のコミット。