0
0

ABC363参加記録 by Python

Posted at

リアルタイムに解けた問題

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0