平成30年度 秋期 午前 問7
基礎理論
配列に関する問題
2 次元配列 A[i, j](i, j はいずれも 0 〜 99 の値をとる)の i > j である要素 A[i,j] は全部で幾つか。
- ア4,851
- イ4,950
- ウ4,999
- エ5,050
答えと解説を見る
✓ これが正解イ4,950
解説
対角線を除いた半分なので4,950個です。
二次元配列のうち、一つ目の添字が二つ目の添字より大きい要素がいくつあるかを数える問いです。数え上げは、全体をいくつかに割ってから引いていくと速くなります。まず全体は、一つ目の添字が100通り、二つ目も100通りですから、掛けて10,000個です。次に二つの添字が等しい要素を数えると、先頭から末尾まで一つずつで100個です。残った9,900個が二つの添字の異なる要素で、ここが要点になります。二つの添字を入れ替えれば、一つ目が大きい要素と二つ目が大きい要素はちょうど一対一に対応しますから、9,900個はぴったり半分ずつに分かれます。割って4,950個です。別の道でも同じ数が出ます。一つ目の添字が1のとき相手は1通り、2のとき2通りと増えていって、99のとき99通りですから、1から99までの総和になります。99に100を掛けて2で割ると4,950です。二通りの組合せの数え方が一致しました。見分けの軸は、等号を含むかどうかです。含めるかどうかで、対角線にあたる100個ぶんがそのまま差になります。添字が0から始まることも押さえておくと、途中式を書き下すときにずれません。この形は、正方形に並んだ要素のうち対角線より下だけを取り出したものにあたります。
ほかの選択肢はなぜ違うのか
- ア4,851:1から98までを足すとこの値になります。添字の範囲を0から98までと一つ短く読むと、ここに落ちます。設問は0から99までの値をとると書いているので、一つ目の添字が99のときの99通りぶんが抜け落ちています。
- ウ4,999:10,000から2を引いて半分にするとこの値になります。二つの添字が等しい要素を100個ではなく2個と数えた形です。両方の添字が同じ組は添字の値ごとに一つずつあるので、全部で100個あります。
- エ5,050:等号を含めた場合の個数で、4,950に対角線の100個を足した値です。設問が求めているのは一つ目の添字が二つ目より大きい要素だけなので、両者が等しい要素をここに加えてはいけません。
出典:平成30年度 秋期 応用情報技術者試験 午前 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)