AtCoder Beginner Contest

【pythonでABC156を解説】A - Beginner

問題概要

問題ページ

問題文

高橋君はプログラミングコンテストサイト「ButCoder」の会員です。

ButCoder の会員には \(2\) つのレーティング 内部レーティング表示レーティング が割り当てられています。

表示レーティングは、その会員のコンテスト参加回数が \(10\) 以上のときは内部レーティングに等しく、そうでないときは、会員のコンテスト参加回数を \(K\) として、内部レーティングから \(100 \times (10 - K)\) を引いたものになります。

高橋君のコンテスト参加回数が \(N\) で表示レーティングが \(R\) であるとき、高橋君の内部レーティングを求めてください。

制約

  • 入力は全て整数である
  • \(1 \leq N \leq 100\)
  • \(0 \leq R \leq 4111\)

問題の考察

表示レーティングから内部レーティングを計算する問題。

表示レーティング\(=\)内部レーティング\(-(100 \times (10 - K))\)の式を変形すると、

内部レーティング\(=\)表示レーティング\(+(100 \times (10 - K))\)となる。

制約「参加回数が \(10\) 以上のときは内部レーティングに等しく、そうでないときは、会員のコンテスト参加回数を \(K\) 」から、\(K\)は最大で\(10\)ということが読み取れるので、min(10, n)のようにmin()を使うと簡単に表現できる。

たびすけ
変数の上限や下限が決まっている場合には、min()max()を使ってあげると簡単に解けるよ!

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n, r = list(map(int, input().rstrip('\n').split()))
    print(r + (10 - min(10, n)) * 100)


if __name__ == '__main__':
    solve()

プログラミング

-AtCoder Beginner Contest
-