問題: 宝くじの当選結果を判定
入力: 当選番号 b
、購入した宝くじの数 n
、および購入した各宝くじの番号 a_1
から a_n
出力: 各宝くじが何等に当選したかを出力
アプローチ:
- 当選番号
b
、購入した宝くじの数n
、および購入した各宝くじの番号a_1
からa_n
を標準入力から読み込む - 各宝くじの番号を当選番号と比較して何等に当選したか判定
- 結果を出力
コード:
# 標準入力からデータを読み込む
import sys
input = sys.stdin.read().strip().split()
b = int(input[0]) # 当選番号
n = int(input[1]) # 購入した宝くじの数
tickets = [int(input[i+2]) for i in range(n)] # 購入した宝くじの番号リスト
# 判定結果を格納するリスト
results = []
# 各宝くじの番号について判定
for ticket in tickets:
if ticket == b:
results.append("first")
elif ticket == b - 1 or ticket == b + 1:
results.append("adjacent")
elif ticket % 10000 == b % 10000 and ticket != b:
results.append("second")
elif ticket % 1000 == b % 1000 and ticket != b and ticket % 10000 != b % 10000:
results.append("third")
else:
results.append("blank")
# 結果を出力
for result in results:
print(result)
コードの説明:
-
データの読み込み:
-
sys.stdin.read().strip().split()
で標準入力からデータを読み込み、スペース区切りで分割します。 - 最初の値を当選番号
b
として整数に変換。 - 次の値を購入した宝くじの数
n
として整数に変換。 - 残りの値を購入した宝くじの番号リスト
tickets
に格納。
-
-
判定:
- 各宝くじの番号
ticket
について以下の条件をチェック:-
ticket == b
の場合は "first"。 -
ticket == b - 1
またはticket == b + 1
の場合は "adjacent"。 - 下4桁が一致し、かつ
ticket != b
の場合は "second"。 - 下3桁が一致し、かつ
ticket != b
および下4桁が一致しない場合は "third"。 - それ以外は "blank"。
-
- 各宝くじの番号
-
結果の出力:
-
results
リストに格納した判定結果を順に出力。
-
このプログラムは、与えられた宝くじの番号に対して各等級の判定を行い、結果を正確に出力します。