【AtCoder】ABC305解説(Python)

京セラプログラミングコンテスト2023(AtCoder Beginner Contest 305)の解説記事です。

目次

ABC305 A – Water Station

問題

問題文の要約は以下の通りです。

問題の要約

全長 100 kmのマラソンコースがあり、スタート地点・ゴール地点とあわせ 5kmおきに給水所が設置されています。 \(N\) km地点にいるとき、最も近い給水所は何km地点か求めよ。

制約

・\(1 \le N \le 100\)
・\(N\) は整数

入力

\(N\)

出力

 答えを出力せよ。

解説

四捨五入を行う。

解説

まず入力 \(N\) をint型で受け取ります。

N=int(input())

答えはN/5に近い整数を5倍したものになるので、N/5を四捨五入し、それを5倍します。

print(round(N/5)*5)

解答

N=int(input())
print(round(N/5)*5)

ABC305 B – ABCDEFG

問題

問題文の要約は以下の通りです。

問題の要約

直線上に 7 個の点 \(A, B, C, D, E ,F ,G\)がこの順に並んでいます。
・\(A, B\)の距離は 3
・\(B, C\)の距離は 1
・\(C, D\)の距離は 4
・\(D, E\)の距離は 1
・\(E, F\)の距離は 5
・\(F, G\)の距離は 9
とします。\(A, B, C, D, E ,F ,G\)のうち異なる2点が与えられたとき、2点間の距離を求めよ。

制約

・\(p\), \(q\) はA,B,C,D,E,F,G のいずれか
・\(p \neq q\)

入力

\(p\) \(q\)

出力

\(p\) と \(q\) の距離を求めよ。

解説

\(p\), \(q\)の間にA,B,C,D,E,F,Gが含まれているか順番に確認する。

解説

まずは\(p\), \(q\) を受け取ります。

p,q=input().split()

処理を簡単にするために \(p\), \(q\)を \(p\)の方がAに近いようにします。つまり、p>qであれば、\(p\) と \(q\) を入れ替えます。

if p>q:
  p,q=q,p

答えの距離ansの初期値を0とします。

ans=0

\(p\)と\(q\)の間にA,B,C,D,E,F,Gがあるか判定し、間にあれば以下の距離をansに足し合わせます。
・\(A, B\)の距離は 3
・\(B, C\)の距離は 1
・\(C, D\)の距離は 4
・\(D, E\)の距離は 1
・\(E, F\)の距離は 5
・\(F, G\)の距離は 9

if p<='A'<'B'<=q:
  ans+=3
if p<='B'<'C'<=q:
  ans+=1
if p<='C'<'D'<=q:
  ans+=4
if p<='D'<'E'<=q:
  ans+=1
if p<='E'<'F'<=q:
  ans+=5
if p<='F'<'G'<=q:
  ans+=9

最後に答えを出力します。

print(ans)

解答

p,q=input().split()
if p>q:
  p,q=q,p
ans=0
if p<='A'<'B'<=q:
  ans+=3
if p<='B'<'C'<=q:
  ans+=1
if p<='C'<'D'<=q:
  ans+=4
if p<='D'<'E'<=q:
  ans+=1
if p<='E'<'F'<=q:
  ans+=5
if p<='F'<'G'<=q:
  ans+=9
print(ans)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次