2023-04-14 『実践 Firestore 』を読んだ / ABC114 C を解いた
たぶん書きそびれているけど 『実践 Firestore 』を読んだ。 SDK のバージョンが変わってしまっているのでソースコード自体は古くなってしまっているけれど、 Firestore における設計の基本的な部分を押さえる意味で良かったように思う。
Firestore の一般的な使い方としては外側に DB が露出しているような状態で、 3 層アーキテクチャ以前のような構成になる。そこで重要なのがセキュリティルールでこれを使って権限はもちろんスキーマなどもチェックする。等々。
- ABC114 C - 755 (AtCoder Beginner Contest 114 C問題)
https://atcoder.jp/contests/abc114/tasks/abc114_c
- https://atcoder.jp/contests/abc114/submissions/40611232
N <= 10^9
なのでたかだか 9 文字の文字列で 3^9 個程度なので全探索できる- 3, 5, 7 を末尾に追加していき、 n を超えたら打ち切る
use proconio::input;
fn f(n: usize, count: &mut usize, s: &mut Vec<char>) {
if s.len() >= 3 {
let x = s.iter().collect::<String>().parse::<usize>().unwrap();
if x > n {
return;
} else if s.iter().any(|c| c == &'3')
&& s.iter().any(|c| c == &'5')
&& s.iter().any(|c| c == &'7')
{
*count += 1;
}
}
for c in &['3', '5', '7'] {
s.push(*c);
f(n, count, s);
s.pop();
}
}
fn main() {
input! {
n: usize
}
let mut count = 0_usize;
let mut s = vec![];
f(n, &mut count, &mut s);
println!("{}", count);
}
今日のコミット。