正答2
解説
正解は2です。
この問題は、100×100の2次元配列のうち、行の添字iが列の添字jより大きい要素、つまり対角線より下側の要素数を求めるものです。
【計算】
要素の総数は 100×100 = 10,000個です。
このうち i=j となる対角線上の要素は100個です。
残りは 10,000-100 = 9,900個です。
i>j と i<j は対称なので、同じ数ずつあります。
よって i>j の要素は 9,900÷2 = 4,950個です。
【選択肢別解説】
1:× 4,851は99×98÷2に当たる値です。
添字の範囲を1〜99のように1つ少なく数えた結果で、0〜99の100通りとは合いません。
2:○ 対角線を除いた9,900個の半分なので、4,950個です。
i=1のときjは0の1個、i=2のとき2個、…、i=99のとき99個と数えても、1+2+…+99=4,950となり一致します。
3:× 4,999は、総数の半分の5,000から1を引いた値に当たります。
対角線上の100個を正しく除いておらず、条件に合いません。
4:× 5,050は1+2+…+100、つまり対角線を含めた i≧j の要素数です。
問題は i>j なので、対角線上の100個を含めてはいけません。
【ポイント】
n×nの配列で i>j の要素数は n(n-1)/2、i≧j なら n(n+1)/2 です。
対角線を含むかどうかで答えが変わるので、不等号に等号が付くかを必ず確認しましょう。