bouzuya/tsukota で Firestore の DocumentReference や CollectionReference を生成する関数を一箇所にまとめてみた。パスの構築はミスしそうなのでパスヘルパーが欲しくなる。それと同じ考えでくくりだしてみた。 RefHelper ? かな。 withConverter
呼び出しも兼ねられるので適切な型が指定されるので良い。
ABC163 : AtCoder Beginner Contest 163
- A - Circle Pond
https://atcoder.jp/contests/abc163/tasks/abc163_a
- 提出: https://atcoder.jp/contests/abc163/submissions/43541183
2_f64 * std::f64::consts::PI * r
- B - Homework
https://atcoder.jp/contests/abc163/tasks/abc163_b
- 提出: https://atcoder.jp/contests/abc163/submissions/43541197
A
の総和をとってN
から引くN
を超えている場合は-1
を出力する
- C - management
https://atcoder.jp/contests/abc163/tasks/abc163_c
- 提出: https://atcoder.jp/contests/abc163/submissions/43541214
- 社員を頂点とし、直属の関係を辺とするグラフで考える
- 各頂点ごとのカウントをすべての辺 (
A
) を走査してつくって出力する
- D - Sum of Large Numbers
https://atcoder.jp/contests/abc163/tasks/abc163_d
- 提出: https://atcoder.jp/contests/abc163/submissions/43541755
- 当時 (2020-04-19) D が解けなかった
10^100
が大きいので選ぶ個数が違えば和が同じになることはありえない- 選ぶ個数は
K..=N+1
を取り得る - 選ぶ個数
X
を固定して考える X
個選ぶときの和の最小値は10^100 * X + SUM(0..=X-1)
になる- 同様に最大値は
10^100 * X + SUM(N + 1 - X..=N)
になる - 最小値から最大値の間は 1 ずつの調整が可能なのですべてつくることができる (当時はこれに気づけなかった)
- つまり選ぶ個数
X
につくれる和の種類は 最大値 - 最小値 + 1 個 - 選ぶ個数の取り得る範囲を走査してこれらの和を取れば良い
- E - Active Infants
https://atcoder.jp/contests/abc163/tasks/abc163_e
- 時間が足りず、未着手
- F - path pass i
https://atcoder.jp/contests/abc163/tasks/abc163_f
- 時間が足りず、未着手
use proconio::input; fn main() { input! { n: usize, k: usize, }; let p = 1_000_000_007; // sum of [a, b] let f = |a: usize, b: usize| -> usize { if a > b { 0 } else { (a + b) * (b + 1 - a) / 2 } }; let mut sum = 0_usize; for x in k..=n + 1 { let min = f(0, x - 1); let max = f(n + 1 - x, n); let count = max - min + 1; sum += count; sum %= p; } let ans = sum; println!("{}", ans); }
今日のコミット。