A問題 Digit Machine
方針
入力値をリストとして保存します。
画面に表示されている数字をリストの要素番号とし、次に画面に表示する番号とします。
ボタンを押すという操作によって画面が切り替わり、この操作は3回だけ行います。
はじめに、画面には0が表示されています。
リストの要素番号は、1つ目を0、2つ目を1・・・という具合に数えます。
入力例1で考えてみます。入力値:list = [9, 0, 1, 2, 3, 4, 5, 6, 7, 8]
初期状態:画面→0
ボタン操作1回目:list[0]は9のため、画面→9
ボタン操作2回目:list[9]は8のため、画面→8
ボタン操作3回目:list[8]は7のため、画面→7
入力例2で考えてみます。入力値:list = [4, 8, 8, 8, 0, 8, 8, 8, 8, 8]
初期状態:画面→0
ボタン操作1回目:list[0]は4のため、画面→4
ボタン操作2回目:list[4]は0のため、画面→0
ボタン操作3回目:list[0]は4のため、画面→4
解答
1 2 3 4 5 |
list = list(map(int, input().split())) n = 0 #最初に画面に表示されている数字 for i in range(3): #ボタン操作は3回 n = list[n] #[1] print(n) |
[1]
画面に表示されている数字nをlistの添字(要素番号)として、新たにnに代入します。
こうすることで、次に画面に表示されている数字がlist[n]に切り替わります。
これを3回繰り返し、最後にnに代入されている数字をprintで出力しました。
B問題 Pasta
方針
M回の食事を行います。
N本のパスタのうち、1つを選んで食べます。※問題文より必ずM<Nです。
N本のパスタはそれぞれ長さが決まっています。(Aの値)
i回目の食事では、食べるパスタの長さが決まっています。(Bの値)
i回目の食事で食べる長さBiのパスタのがN本のパスタの中にあるかを確認します。
解答
1 2 3 4 5 6 7 8 9 10 11 |
n,m = map(int, input().split()) A = list(map(int, input().split())) #それぞれ決まった長さを持つパスタをリストで保存 B = list(map(int, input().split())) #各食事で食べるパスタの長さをリストで保存 for i in range(m): if B[i] in A: #各食事で食べる長さは決まっており(B[i])、リストAの中にあるかを確認 A.remove(B[i]) #あればそのパスタをリストAから除外(食べた後はなくなる) else: print('No') exit() print('Yes') |
コメント