Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

令和8年度 大学入学共通テスト 情報I 第3問

令和8年度大学入学共通テスト 情報Iの第3問は文化祭で来訪者が体験できるゲーム作品の待ち時間について考える問題でした。

問2,問3の内容を実際にPythonで作ってみました。ただし、配列の添字は0から始まるように変更しています(0-indexed)。

center_exam_info2026_3_fig2.py

# 第3問 図2 2人目以降の来訪者の待ち時間を求めるプログラム
def 要素数(a):
    return len(a)


def 最大値(x, y):
    if x > y:
        return x
    else:
        return y


taiken = 3
Touchaku = [0, 3, 4, 10, 11, 12]
kyakusu = 要素数(Touchaku)
Kaishi = [0, 0, 0, 0, 0, 0]
Shuryou = [0, 0, 0, 0, 0, 0]
Shuryou[0] = taiken
for i in range(1, kyakusu):
    Kaishi[i] = 最大値(Touchaku[i], Shuryou[i - 1])
    Shuryou[i] = Kaishi[i] + taiken
    print(f"{i + 1}人目の待ち時間:{Kaishi[i] - Touchaku[i]}")

実行

% python center_exam_info2026_3_fig2.py
2人目の待ち時間:0
3人目の待ち時間:2
4人目の待ち時間:0
5人目の待ち時間:2
6人目の待ち時間:4

center_exam_info2026_3_fig3.py

# 第3問 図3 最長待ち時間が10分間未満となる体験時間を調べるプログラム
def 要素数(a):
    return len(a)


def 最大値(x, y):
    if x > y:
        return x
    else:
        return y


Touchaku = [0, 3, 4, 10, 11, 12]
kyakusu = 要素数(Touchaku)
for taiken in range(1, 16):
    Kaishi = [0, 0, 0, 0, 0, 0]
    Shuryou = [0, 0, 0, 0, 0, 0]
    Shuryou[0] = taiken
    for i in range(1, kyakusu):
        Kaishi[i] = 最大値(Touchaku[i], Shuryou[i - 1])
        Shuryou[i] = Kaishi[i] + taiken
    saichou = 0
    for i in range(0, kyakusu):
        saichou = 最大値(saichou, Kaishi[i] - Touchaku[i])
    if saichou < 10:
        print(f"体験時間{taiken}分間:最長待ち時間{saichou}分間")

実行

% python center_exam_info2026_3_fig3.py
体験時間1分間:最長待ち時間0分間
体験時間2分間:最長待ち時間2分間
体験時間3分間:最長待ち時間4分間
体験時間4分間:最長待ち時間8分間

center_exam_info2026_3_fig3_kai.py

# 第3問 図3 最長待ち時間が10分間未満となる体験時間を調べるプログラム(改良版)
def 要素数(a):
    return len(a)


def 最大値(x, y):
    if x > y:
        return x
    else:
        return y


Touchaku = [0, 3, 4, 10, 11, 12]
kyakusu = 要素数(Touchaku)
taiken = 1
saichou = 0
while taiken <= 15 and saichou < 10:
    Kaishi = [0, 0, 0, 0, 0, 0]
    Shuryou = [0, 0, 0, 0, 0, 0]
    Shuryou[0] = taiken
    for i in range(1, kyakusu):
        Kaishi[i] = 最大値(Touchaku[i], Shuryou[i - 1])
        Shuryou[i] = Kaishi[i] + taiken
    saichou = 0
    for i in range(0, kyakusu):
        saichou = 最大値(saichou, Kaishi[i] - Touchaku[i])
    if saichou < 10:
        print(f"体験時間{taiken}分間:最長待ち時間{saichou}分間")
    taiken = taiken + 1

実行

% python center_exam_info2026_3_fig3_kai.py
体験時間1分間:最長待ち時間0分間
体験時間2分間:最長待ち時間2分間
体験時間3分間:最長待ち時間4分間
体験時間4分間:最長待ち時間8分間

関連