リアルタイムに解けた問題
A - Piling Up
問題文
AtCoderでは、ユーザーのレートは正の整数で与えられ、その値に応じて^
がいくつか表示されます。特に、レートが1以上399以下のときは次のようになります。
- レートが1以上99以下のときは
^
は1個表示される。 - レートが100以上199以下のときは
^
は2個表示される。 - レートが200以上299以下のときは
^
は3個表示される。 - レートが300以上399以下のときは
^
は4個表示される。
現在の高橋くんのレートは$R$です。ここで、$R$は1以上299以下の整数であることが保証されます。
表示される^
の数を現在より増やすために、高橋くんは少なくともレートをいくつ上げる必要があるか答えてください。
なお、本問題の制約下で、高橋くんはレートを400以上にあげることなく^
の数を増やすことができることが証明できます。
制約
- $1 \leq R \leq 299$
- $R$は整数
アルゴリズム
問題文で定義されている範囲を条件分岐の基準とし、含まれる範囲の最大値+1-$R$を出力。
ソースコード
R = int(input())
if 1 <= R <= 99:
print(100-R)
elif 100 <= R <= 199:
print(200-R)
elif 200 <= R <= 299:
print(300-R)
else:
print(400-R)
B - Japanese Cursed Doll
問題文
$N$人の人がおり、$i$人目($1 \leq i \leq N$)の現在の髪の長さは$L_{i}$です。
すべての人は1日経つごとに髪の長さが1づつ増えます。
髪の長さが$T$以上の人が初めて$P$人以上になるのは現在から何日後か出力してください。
ただし、現在の時点ですでに髪の長さが$T$以上の人が$P$人以上いる場合は0を出力してください。
制約
- $1 \leq N \leq 100$
- $1 \leq L_{i} \leq 100$
- $1 \leq T \leq 100$
- $1 \leq P \leq N$
- 入力はすべての整数
アルゴリズム
whileでループを回し、各ループごとに髪の長さが$T$以上の人数をカウントする。その値が$P$以上であれば、そのときの経過日数を出力し、プログラムを終了する。$P$以下であれば、経過日数とそれぞれの髪の長さを1増やす。
ソースコード
N, T, P = map(int, input().split())
L = list(map(int, input().split()))
day = 0
while True:
count = 0
for l in L:
if l >= T:
count += 1
if count >= P:
print(day)
exit()
else:
day += 1
for i in range(N):
L[i] = L[i] + 1