ABC191 : AtCoder Beginner Contest 191
- A - Vanishing Pitch
https://atcoder.jp/contests/abc191/tasks/abc191_a
- 提出: https://atcoder.jp/contests/abc191/submissions/43939200
!(v * t..=v * s).contains(&d)
- B - Remove It
https://atcoder.jp/contests/abc191/tasks/abc191_b
- 提出: https://atcoder.jp/contests/abc191/submissions/43939206
a.iter().copied().filter(|a_i| a_i != &x)
して出力するだけ
- C - Digital Graffiti
https://atcoder.jp/contests/abc191/tasks/abc191_c
- 提出: https://atcoder.jp/contests/abc191/submissions/43939406
- 周囲の
.
マスから周囲 8 マスの状況に合わせてカウントするだけ - ただ、実装がひたすら重い。もっと簡単に解ける方針がありそう
- D - Circle Lattice Points
https://atcoder.jp/contests/abc191/tasks/abc191_d
- 提出: https://atcoder.jp/contests/abc191/submissions/43952855
- 解説 (以前の自身の提出) AC
- 小数の配慮がややこしいので 10_000 をかけて整数に
- 正負での切り上げ・切り捨ての違いの考慮が難しいので中心を 10_000_000 ずつずらして正の数に
- E - Come Back Quickly
https://atcoder.jp/contests/abc191/tasks/abc191_e
- 未着手
- F - GCD or MIN
https://atcoder.jp/contests/abc191/tasks/abc191_f
- 未着手
use proconio::{input, marker::Chars}; fn main() { input! { x: Chars, y: Chars, r: Chars, }; let f = |chars: Vec<char>| -> i64 { let n = chars.len(); match chars.iter().position(|c| c == &'.') { Some(p) => chars .into_iter() .filter(|&c| c != '.') .chain("0".repeat(4 - (n - 1 - p)).chars()) .collect::<String>(), None => chars .into_iter() .chain("0".repeat(4).chars()) .collect::<String>(), } .parse::<i64>() .unwrap() }; let m = 10_000_i64; let cx = f(x) + 10_000_000_000; let cy = f(y) + 10_000_000_000; let r = f(r); let mut ans = 0_i64; for x in (cx - r + m - 1) / m..=(cx + r) / m { let dx = (cx - x * m).abs(); let dy = { let mut ok = 0; let mut ng = r + 1; while ng - ok > 1 { let dy = ok + (ng - ok) / 2; if dx.pow(2) + dy.pow(2) <= r.pow(2) { ok = dy; } else { ng = dy; } } ok }; let top = (cy + dy) / m; let bottom = (cy - dy + m - 1) / m; ans += top - bottom + 1; } println!("{}", ans); }
今日のコミット。
- rust-atcoder 1 commit
- genpi 1 commit