A問題
解答
1 2 3 4 5 |
x, y = map(int, input().split()) if x-3<=y<=x+2: print("Yes") else: print("No") |
B問題
解答
1 2 3 4 5 6 7 8 9 10 11 |
n = input() while True: n = str(n) n_1 = int(n[0]) n_2 = int(n[1]) n_3 = int(n[2]) if n_1*n_2==n_3: print(n) return None n = int(n) n += 1 |
C問題
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
n,m = map(int, input().split()) A = list(map(int, input().split())) A.sort() #(Aの右端の要素+Mの最大値を加えた値)をリストに加える。 #後のwhile文での探索で、Aの右端の要素+mよりも大きい値がないとrightがインクリメントされ、範囲外参照になることを防ぐため A.append(A[-1] + 10**9) number_of_present = 0 right = 0 for left in range(n): #各プレゼントの座標+mの範囲において、リストAの右端の要素を取得するためにAのインデックスを増やす while A[right] < A[left]+m: right += 1 #right,leftはAのインデックスなので、right-leftが獲得できるプレゼントの個数になる number_of_present = max(number_of_present, right-left) print(number_of_present) |
全探索で獲得できるプレゼントの最大値を求める。
全探索は以下を行う
・以下を各プレゼントについて行う。
・(各プレゼントの座標+mの座標)の範囲内で、リストA内で右端の要素を調べる。
・右端のプレゼントのインデックスから左端のプレゼントのインデックスを引いて求める
・現在の最大獲得個数を比較して大きい方を保持する
left,rightはリストAのインデックス
A[left],A[right]はAのプレゼントの座標
補足・参考・感想
■記事一覧
コメント