2022-05-20 ABC198 A, B, C, D, E を解いた / crates:xdg を使っている
ABC198 : AtCoder Beginner Contest 198 の A, B, C, D, E を解いた。
- A - Div
https://atcoder.jp/contests/abc198/tasks/abc198_a
- 提出: https://atcoder.jp/contests/abc198/submissions/31814894
- 両端以外の位置で区切りをひとつ入れれば良い
- 両端以外の位置は
N - 1
- B - Palindrome with leading zeros
https://atcoder.jp/contests/abc198/tasks/abc198_b
- 提出: https://atcoder.jp/contests/abc198/submissions/31814908
- 十進法で表した文字列なので先頭に
'0'
はない - 先頭には
0
個以上の'0'
をつけられるので先頭の'0'
の個数は任意の個数にできる - 末尾に
'0'
がついていることはあるが先頭に任意個の'0'
で打ち消せるので無視して良い - つまり末尾の
'0'
を trim して残った文字列が回文になっているなら Yes
- C - Compass Walking
https://atcoder.jp/contests/abc198/tasks/abc198_c
- 提出: https://atcoder.jp/contests/abc198/submissions/31814988
- 端数が嫌なので
sqrt
はしたくない - ちょうどの歩数を求めようとして迷った
- よく見ると答えとしてありえる歩数は制約から
10^5
程度しかないことが分かる - 歩数
i
ごとに(i * R) * (i * R)
して(X * X) + (Y * Y)
と比較する - 基本的には
R
側が超えていればどこかで「たゆませる」ことで(X,Y)
に到達できる - ただし 1 歩目で超えている場合は
(X,Y)
に合わせるのに 2 歩かかる点に注意する
- D - Send More Money
https://atcoder.jp/contests/abc198/tasks/abc198_d
- 提出: https://atcoder.jp/contests/abc198/submissions/31815296
- 文字が 10 種類を超える場合は
"UNSOLVABLE"
になる 10!
だから間に合うはずなのだけどどこかで実装を間違えたのか実行時間がかかったので方針を切り替えて覆面算を真面目に解いた- 最後の桁で繰り上がりがあるケースを見落として 2WA
- 実装が重かった
- E - Unique Color
https://atcoder.jp/contests/abc198/tasks/abc198_e
- 提出: https://atcoder.jp/contests/abc198/submissions/31815651
- 頂点 1 を根とすれば根からその頂点までにその頂点と同じ値が出現するかがわかれば良い
- 木を DFS して set に対して行きに insert 帰りに remove して重複なく insert できたものが良い頂点
- F - Cube
https://atcoder.jp/contests/abc198/tasks/abc198_f
- 問題さえ読まず
bouzuya/rust-sandbox bex で crates:xdg をつかって access_token を保存するようにしている。
macOS に適したディレクトリを取りたいなら crates:dirs のほうが良いのだろうけど $HOME/.local/state
のような素朴なものを使えるほうが好みなので crates:xdg を使っている。
XDG Base Directory の使いみちをいつも忘れて調べている。 access_token は $XDG_STATE_HOME
($HOME/.local/state
) よりも $XDG_CACHE_HOME
($HOME/.cache
) のほうが適切かもしれないけどよく分からない。
今日のコミット。