大学入学共通テスト(情報) 過去問
令和5年度(2023年度)本試験
問50 (<旧課程>情報関係基礎(第3問) 問18)
問題文
Aさんは、天井から地上まで吊り下げられたロープをキャラクターに順次飛び移らせてゴールを目指すゲーム(図1)を遊んでいる。ロープは全部で11本あり、一列に並んでいる。ゲームはキャラクターが1本目のロープの高さ55mの地点にいる状況から始まり、11本目のロープの高さ0mの地点がゴールである。キャラクターができることは、ロープを降りることと、同じ高さのまま次のロープに飛び移ることの二つのみであり、ロープを登ったり、前のロープに戻ったりすることはできない。各ロープには1か所ずつリボンが巻かれており、キャラクターがこのリボンに触れるたびに得点を1点獲得できる。各ロープにリボンが巻かれている高さ(以下、リボンの高さと呼ぶ。)はあらかじめ決まっており、表1のとおりとなっている。ゴールに到達して最後のリボンの得点を加えたゲーム終了時の得点をできるだけ高くするため、Aさんは手続きを作成して、どのようにキャラクターを動かしたらよいか検討することにした。
(3)Aさんはこのゲームで獲得可能な最高得点を求めるため、次の手順を考えた。まず、1本目からi本目のロープまでに限定して考え、しかもi本目のロープのリボンには必ず触れることとする。このとき獲得可能な最高得点をKokomade[i]点とする。
i=1のとき、このゲームでは1本目のロープのリボンの高さが55mでスタート地点と一致しているので、Kokomade[1]の値は1である。i≧2のときは、iより小さいすべてのt(ただしt≧1)についてKokomade[t]が求まっていれば、次のように考えてKokomade[i]を求めることができる。
【Kokomade[i]の求め方】 t本目のロープのリボンに触れて、かつi本目のロープのリボンにも触れることができる条件は、( タ )であるが、その条件を満たすすべてのtの中で、Kokomade[t]の値が最も大きいものを選ぶと、「i本目のロープのリボンに触れる一つ前に触れておくべきリボン」が定まる。すると、そのKokomade[t]の値にもとづいて、Kokomade[i]の値が定まる。
iの値を2から順次増やしていけば、すべてのiについてKokomade[i]の値を求めることができる。最後のロープのリボンの高さは0mなのでこのリボンには必ず触れることができることを考えると、Kokomade[11]がこのゲームで獲得可能な最高得点となる。この手順を考えたAさんが作成した手続きが図4である。
手続きの流れを確認するため、表3を用意して、図4の(09)行目の直後におけるi,Kokomade[i]の値を記録した。i=2のときは、2より小さいtは1のみであり、しかもこのとき条件( タ )を満たす。つまり1本目と2本目の両方のロープのリボンに触れることができるので、Kokomade[2]の値は2となる。同様に記録を続けると、i=3,4,5のときのKokomade[i]の値はそれぞれ( ツ ),( テ ),( ト )となる。手続きを実行し、このゲームで獲得可能な最高得点は( ナ )点であることがわかった。
図4 獲得可能な最高得点を求める手続き
(01)Kokomade[1]←1
(02)iを2から11まで1ずつ増やしながら,
(03)│ saikou←0
(04)│ tを1からi−1まで1ずつ増やしながら,
(05)│ │ もし( タ )かつsaikou<Kokomade[t]ならば
(06)│ │ │ saikou←Kokomade[t]
(07)│ │ を実行する
(08)│ を繰り返す
(09)│ Kokomade[i]←( チ )
(10)を繰り返す
(11)「獲得可能な最高得点は」とKokomade[11]と「点」を表示する
( ナ )にあてはまるものを次のうちから1つ選べ。
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
大学入学共通テスト(情報)試験 令和5年度(2023年度)本試験 問50(<旧課程>情報関係基礎(第3問) 問18) (訂正依頼・報告はこちら)
Aさんは、天井から地上まで吊り下げられたロープをキャラクターに順次飛び移らせてゴールを目指すゲーム(図1)を遊んでいる。ロープは全部で11本あり、一列に並んでいる。ゲームはキャラクターが1本目のロープの高さ55mの地点にいる状況から始まり、11本目のロープの高さ0mの地点がゴールである。キャラクターができることは、ロープを降りることと、同じ高さのまま次のロープに飛び移ることの二つのみであり、ロープを登ったり、前のロープに戻ったりすることはできない。各ロープには1か所ずつリボンが巻かれており、キャラクターがこのリボンに触れるたびに得点を1点獲得できる。各ロープにリボンが巻かれている高さ(以下、リボンの高さと呼ぶ。)はあらかじめ決まっており、表1のとおりとなっている。ゴールに到達して最後のリボンの得点を加えたゲーム終了時の得点をできるだけ高くするため、Aさんは手続きを作成して、どのようにキャラクターを動かしたらよいか検討することにした。
(3)Aさんはこのゲームで獲得可能な最高得点を求めるため、次の手順を考えた。まず、1本目からi本目のロープまでに限定して考え、しかもi本目のロープのリボンには必ず触れることとする。このとき獲得可能な最高得点をKokomade[i]点とする。
i=1のとき、このゲームでは1本目のロープのリボンの高さが55mでスタート地点と一致しているので、Kokomade[1]の値は1である。i≧2のときは、iより小さいすべてのt(ただしt≧1)についてKokomade[t]が求まっていれば、次のように考えてKokomade[i]を求めることができる。
【Kokomade[i]の求め方】 t本目のロープのリボンに触れて、かつi本目のロープのリボンにも触れることができる条件は、( タ )であるが、その条件を満たすすべてのtの中で、Kokomade[t]の値が最も大きいものを選ぶと、「i本目のロープのリボンに触れる一つ前に触れておくべきリボン」が定まる。すると、そのKokomade[t]の値にもとづいて、Kokomade[i]の値が定まる。
iの値を2から順次増やしていけば、すべてのiについてKokomade[i]の値を求めることができる。最後のロープのリボンの高さは0mなのでこのリボンには必ず触れることができることを考えると、Kokomade[11]がこのゲームで獲得可能な最高得点となる。この手順を考えたAさんが作成した手続きが図4である。
手続きの流れを確認するため、表3を用意して、図4の(09)行目の直後におけるi,Kokomade[i]の値を記録した。i=2のときは、2より小さいtは1のみであり、しかもこのとき条件( タ )を満たす。つまり1本目と2本目の両方のロープのリボンに触れることができるので、Kokomade[2]の値は2となる。同様に記録を続けると、i=3,4,5のときのKokomade[i]の値はそれぞれ( ツ ),( テ ),( ト )となる。手続きを実行し、このゲームで獲得可能な最高得点は( ナ )点であることがわかった。
図4 獲得可能な最高得点を求める手続き
(01)Kokomade[1]←1
(02)iを2から11まで1ずつ増やしながら,
(03)│ saikou←0
(04)│ tを1からi−1まで1ずつ増やしながら,
(05)│ │ もし( タ )かつsaikou<Kokomade[t]ならば
(06)│ │ │ saikou←Kokomade[t]
(07)│ │ を実行する
(08)│ を繰り返す
(09)│ Kokomade[i]←( チ )
(10)を繰り返す
(11)「獲得可能な最高得点は」とKokomade[11]と「点」を表示する
( ナ )にあてはまるものを次のうちから1つ選べ。
- 6
- 7
- 8
- 9
正解!素晴らしいです
残念...
この過去問の解説 (2件)
01
Kokomade[1]=1
Kokomade[2]=2
i=6のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧22,0<1,1
2,53≧22,1<2,2
3,31≧22,2<3,3
4,37≧22,3<3(偽なので以降は実行されない)
5,37≧22,3<4,4
Kokomade[6]←saikou+1=5
i=7のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧13,0<1,1
2,53≧13,1<2,2
3,31≧13,2<3,3
4,37≧13,3<3(偽なので以降は実行されない)
5,37≧13,3<4,4
6,22≧13,4<5,5
Kokomade[7]←saikou+1=6
i=8のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧19,0<1,1
2,53≧19,1<2,2
3,31≧19,2<3,3
4,37≧19,3<3(偽なので以降は実行されない)
5,37≧19,3<4,4
6,22≧19,4<5,5
7,13≧19(偽なので以降は実行されない)
Kokomade[8]←saikou+1=6
i=9のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧25,0<1,1
2,53≧25,1<2,2
3,31≧25,2<3,3
4,37≧25,3<3(偽なので以降は実行されない)
5,37≧25,3<4,4
6,22≧25(偽なので以降は実行されない)
7,13≧25(偽なので以降は実行されない)
8,19≧25(偽なので以降は実行されない)
Kokomade[9]←saikou+1=5
i=10のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧16,0<1,1
2,53≧16,1<2,2
3,31≧16,2<3,3
4,37≧16,3<3(偽なので以降は実行されない)
5,37≧16,3<4,4
6,22≧16,4<5,5
7,13≧16(偽なので以降は実行されない)
8,19≧16,5<6,6
9,25≧16,6<5(偽なので以降は実行されない)
Kokomade[10]←saikou+1=7
i=11のとき
t,Ribon[t]≧Ribon[i],saikou<Kokomade[t],saikou
1,55≧0,0<1,1
2,53≧0,1<2,2
3,31≧0,2<3,3
4,37≧0,3<3(偽なので以降は実行されない)
5,37≧0,3<4,4
6,22≧0,4<5,5
7,13≧0,5<6,6
8,19≧0,6<6(偽なので以降は実行されない)
9,25≧0,6<5(偽なので以降は実行されない)
10,16≧0,5<7,7
Kokomade[11]←saikou+1=ナ8
となります。
参考になった数0
この解説の修正を提案する
02
saikou は
Kokomade[5]までの候補の中で最大:saikou = 4 です。
i=6 → Ribon[6] = 22
t を 1 から 5 までで、Ribon[t] ≥ 22 を満たすものを調べます。
55 → ○ → 1
53 → ○ → 2
31 → ○ → 3
37 → ○ → 3
37 → ○ → 4
最大 saikou = 4
→ Kokomade[6] = 4 + 1 = 5
i=7 → Ribon[7] = 13
t を 1 から 6 までで、Ribon[t] ≥ 13 を満たすものを調べます。
55 → ○ → 1
53 → ○ → 2
31 → ○ → 3
37 → ○ → 3
37 → ○ → 4
22 → ○ → 5
最大 saikou = 5
→ Kokomade[7] = 5 + 1 = 6
i=8 → Ribon[8] = 19
t を 1 から 7 までで、Ribon[t] ≥ 19 を満たすものを調べます。
55 → ○ → 1
53 → ○ → 2
31 → ○ → 3
37 → ○ → 3
37 → ○ → 4
22 → ○ → 5
13 → ✕
最大 saikou = 5
→ Kokomade[8] = 5 + 1 = 6
i=9 → Ribon[9] = 25
t を 1 から 8 までで、Ribon[t] ≥ 25 を満たすものを調べます。
55 → ○ → 1
53 → ○ → 2
31 → ○ → 3
37 → ○ → 3
37 → ○ → 4
22 → ✕
13 → ✕
19 → ✕
最大 saikou = 4
→ Kokomade[9] = 4 + 1 = 5
i=10 → Ribon[10] = 16
t を 1 から 9 までで、Ribon[t] ≥ 16 を満たすものを調べます。
55 → ○ → 1
53 → ○ → 2
31 → ○ → 3
37 → ○ → 3
37 → ○ → 4
22 → ○ → 5
13 → ✕
19 → ○ → 6
25 → ○ → 5
最大 saikou = 6
→ Kokomade[10] = 7
i=11 → Ribon[11] = 0
t を 1 から 10 までで、Ribon[t] ≥ 0 を満たすものは全てになるので
Kokomade[11] = 7 + 1 = 8
となります。
参考になった数0
この解説の修正を提案する
前の問題(問49)へ
令和5年度(2023年度)本試験 問題一覧
次の問題(問51)へ