ABC108 : AtCoder Beginner Contest 108 の A, B, C を解いた。
- A - Pair
https://atcoder.jp/contests/abc108/tasks/abc108_a
- 提出: https://atcoder.jp/contests/abc108/submissions/39792981
(k / 2 + k % 2) * (k / 2)
K
以下の、偶数の個数 * 奇数の個数が答えになる
- B - Ruined Square
https://atcoder.jp/contests/abc108/tasks/abc108_b
- 提出: https://atcoder.jp/contests/abc108/submissions/39793254
- 手で図を描きながら、 (x1,y1) と (x2,y2) の差が……というのを想像して計算する
- C - Triangular Relationship
https://atcoder.jp/contests/abc108/tasks/arc102_a
- 提出: https://atcoder.jp/contests/abc108/submissions/39793890
((a + b) % k == 0) && ((b + c) % k == 0) && ((c + a) % k == 0)
a
を固定するとb
とc
は mod K で同じ- K と a から b (mod K) も c (mod K) は決まる
- さらに b (mod K) と c (mod K) は足したとき mod K で 0 になる
- mod K での個数をあらかじめ数えておいて…… (0..k) で試す
use proconio::input; fn main() { input! { n: usize, k: usize, }; let mut count = vec![0_usize; k]; for x in 1..=n { count[x % k] += 1; } let mut sum = 0_usize; for a in 0..k { let b = (k - a) % k; let c = b; if (b + c) % k == 0 { sum += count[a] * count[b] * count[c] } } let ans = sum; println!("{}", ans); }
今日のコミット。
- tsukota 2 commits
- rust-atcoder 1 commit