3
0

問題: 宝くじの当選結果を判定

入力: 当選番号 b、購入した宝くじの数 n、および購入した各宝くじの番号 a_1 から a_n
出力: 各宝くじが何等に当選したかを出力

アプローチ:

  1. 当選番号 b、購入した宝くじの数 n、および購入した各宝くじの番号 a_1 から a_n を標準入力から読み込む
  2. 各宝くじの番号を当選番号と比較して何等に当選したか判定
  3. 結果を出力

コード:

# 標準入力からデータを読み込む
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)

コードの説明:

  1. データの読み込み:

    • sys.stdin.read().strip().split() で標準入力からデータを読み込み、スペース区切りで分割します。
    • 最初の値を当選番号 b として整数に変換。
    • 次の値を購入した宝くじの数 n として整数に変換。
    • 残りの値を購入した宝くじの番号リスト tickets に格納。
  2. 判定:

    • 各宝くじの番号 ticket について以下の条件をチェック:
      • ticket == b の場合は "first"。
      • ticket == b - 1 または ticket == b + 1 の場合は "adjacent"。
      • 下4桁が一致し、かつ ticket != b の場合は "second"。
      • 下3桁が一致し、かつ ticket != b および下4桁が一致しない場合は "third"。
      • それ以外は "blank"。
  3. 結果の出力:

    • results リストに格納した判定結果を順に出力。

このプログラムは、与えられた宝くじの番号に対して各等級の判定を行い、結果を正確に出力します。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0