2023-09-22 bouzuya/serde-firestore-value の続き / ABC216 C を解いた
bouzuya/serde-firestore-value 。
serializer と deserializer がおおむね動くようになった。
#[serde(skip)]
や #[serde(rename = "...")]
や #[serde(with = "...")]
が動作することも確認した。
あとは Timestamp
や LagLng
の扱いかな……。
まだ雰囲気で serde を使っているところがあるのでもうすこし自信を持って使えるようにしたいところ。
ABC216 : AtCoder Beginner Contest 216
- C - Many Balls
https://atcoder.jp/contests/abc216/tasks/abc216_c
- 提出: https://atcoder.jp/contests/abc216/submissions/45797942
- 逆向きに調べる
- N が 2 で割り切れるなら 2 で割る (B) 、そうでないなら 1 を引く (A)
- これを 0 になるまで繰り返す
- 操作を逆順に戻せば答えになる
- 10^18 は 10^3^6 で 2^10^6 なので B が 60 回くらいで到達できる 2 回に 1 回は 2 で割れることから半分を調整にあてても 120 回あれば大丈夫そう
use proconio::input;
fn main() {
input! {
mut n: usize,
}
let mut ans = vec![];
while n > 0 {
if n % 2 == 0 {
ans.push('B');
n /= 2;
} else {
ans.push('A');
n -= 1;
}
}
ans.reverse();
let ans = ans.into_iter().collect::<String>();
println!("{}", ans);
}
今日のコミット。