2023-03-09 Pixel 5 を買った / ABC156 の A, B, C, D を解いた
Pixel 5 を買った。 2 台目。 Pixel 7a や 8 が小さいものになるならたぶん買わなくていいんだろうけど……不安なので買っておくことにした。
ABC156 : AtCoder Beginner Contest 156 の A, B, C, D を解いた。
- A - Beginner
https://atcoder.jp/contests/abc156/tasks/abc156_a
- 提出: https://atcoder.jp/contests/abc156/submissions/39559789
if n >= 10 { r } else { r + (100 * (10 - n)) }
- B - Digits
https://atcoder.jp/contests/abc156/tasks/abc156_b
- 提出: https://atcoder.jp/contests/abc156/submissions/39559817
- 手で計算するときは K で割って余りを残していく、その要領で割れる回数が答えになる
- C - Rally
https://atcoder.jp/contests/abc156/tasks/abc156_c
- 提出: https://atcoder.jp/contests/abc156/submissions/39559873
- 座標 P は
1..=100
なのですべて試して最も小さいものが答えになる
- D - Bouquet
https://atcoder.jp/contests/abc156/tasks/abc156_d
- 提出: https://atcoder.jp/contests/abc156/submissions/39560237
- 全体が
2^N-1
になる (各花を取る取らない、 0 本のケースを除く) - a 本になるのは
N choose a
- b 本になるのも同様に
N choose b
- 全体から a 本のケースと b 本のケースを除けば答えになる
N choose x
の箇所で冗長なことをしてしまっている
use modint::ModInt1000000007 as ModInt;
use proconio::input;
fn main() {
input! {
n: usize,
a: usize,
b: usize,
};
let all = ModInt::new(2).pow(n as u64) - 1;
let mut v_a = ModInt::new(1);
for i in 0..a {
v_a *= ModInt::new(n) - i;
}
for i in 1..=a {
v_a /= i;
}
let mut v_b = ModInt::new(1);
for i in 0..b {
v_b *= ModInt::new(n) - i;
}
for i in 1..=b {
v_b /= i;
}
let ans = all - v_a - v_b;
println!("{}", ans);
}
// modint
『 ゆめフロ ランチの会 #11 』 https://yumemi.connpass.com/event/277423/ に参加した。Jest の高速化についての記事を読んでいた。
Expo のチュートリアル https://docs.expo.dev/tutorial/introduction/ を進めている。明日には終わる。
今日のコミット。
- rust-sandbox 1 commit
- rust-atcoder 1 commit