京セラプログラミングコンテスト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)