🕌

AtCoder ABC205 個人的メモ

2021/06/13に公開

所感

abcd4完
abc205_score

A - kcal

\frac{AB}{100}

A, B = map(int, input().split())

ans = B / 100 * A
print(ans)

B - Permutation Check

Aが問題の条件を満たすならば、降順にソートした時に1,2,3,\cdots ,Nとなるはず。
なので、Aをソートしてそうなってるか判定する。

N = int(input())
A = list(map(int, input().split()))

A.sort()
if all(j == a for j, a in enumerate(A, start=1)):
    print("Yes")
else:
    print("No")

C - POW

比較するのはA^C,B^Cの2つ。
Cは正だが、A,Bは負の値もあり得る。
A,Bが正ならばCに依らずに両者の大小が分かるが、A,Bのいずれかが負の場合はCの偶奇によってA^C,B^Cの計算結果の符号がA,Bのときから反転するかもしれない。
ということでCが偶数か奇数なのかだけが重要なので、奇数ならばC=1、偶数ならばC=2とすればおk。

A, B, C = map(int, input().split())

if C % 2:
    C = 1
else:
    C = 2

a = pow(A, C)
b = pow(B, C)
if a < b:
    print("<")
elif a > b:
    print(">")
else:
    print("=")

D - Kth Excluded

N=0とすると、小さい方からK番目の数字はKである。

  1. A_i\leq KとなるA_ij個あるとする。
  2. この時の小さい方からK番目の数字はK+jとなる。
  3. K<A_i\leq K+jとなるA_iがあるならば、1.2.を繰り返す。
from bisect import bisect

N, Q = map(int, input().split())
A = list(map(int, input().split()))

for _ in range(Q):
    k = int(input())

    ans = k
    i = 0
    while True:
        new_i = bisect(A, ans)
        if i == new_i:
            break
        ans += new_i - i
        i = new_i

    print(ans)

Discussion