2023-03-17 ABC108 の A, B, C を解いた
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