ABC161 Pythonで参加した

ABC161(A〜C)

初記事。競プロ初心者です。東工大というところで学生してます。

灰色コーダーですので、あまり参考にならないと思いますが、考えたことや感想など載せていきます。output だいじ。

まあ、競プロでPython使う人は増えているようだし、Pythonの記事はまだそこまで多くない気がするので、少しは意義もあるかな。

と言っても、コンテスト内でACしたのはCまでです。 残りは後日解けたら追記します。

Dはcodeは書けたけどTLE確実だったので、出しませんでした。復習しておきます。

A - ABC Swap

箱 A, B, C の中身を入れ替えるわけですが、x、y、zの移動は簡単に追えるので、z, x, yの順番になることに気づくだけです。

x, y, z = map(int, input().split())
print(z, x, y)

B - Popular Vote

A_i をリストとして持ち、各要素が(A_i の総和) / (4M) 以上かどうかを for ループでチェックしていきました。 シンプルですね。

n, m = map(int, input().split())
a = list(map(int, input().split()))
popular = 0
for i in range(n):
    if a[i] >= sum(a) / (4 * m):
        popular += 1

print("Yes" if popular >= m else 'No')

C - Replacing Integer

これは少し数学力よりの問題でしょうか。 実装はめちゃ簡単です。 こういうのがすぐできたのはよかった。 絶対値とってるので少しわかりにくいかもしれませんが、結局 K を足したり引いたりした絶対値を最小にしたいので、とりあえず割り算すればいいと思います。

7 を 4 で割ったあまりは 3 ですが、これよりも |3-4|の方が小さいです(3 ≡ -1 (mod 4))。 kで割った余りは必ず0以上k未満の値として得られるので、そこからKを引いて絶対値とったもの、つまりkから余りを引いたものと比較して小さい方をとれば良いでしょう。

n, k = map(int, input().split())
ans = min(n % k, k - (n % k))
print(ans)