配列活用メニュー】> 【配列への副作用を伴う操作】STEP: 8 全ての要素を用いた処理 (paizaランク D 相当) [難易度: 1628 ±17]

※リンク先へ移動するためには[paiza]へのログインが必要です。

12-02-08-01
問題文

配列 A の要素数 N と配列 A の各要素 A_1, A_2, ..., A_N が与えられるので、A の要素の全てのペアについてのかけ算の結果を出力してください。

入力値(例)
2
1
1

出力値(例)
1

解答例

12-02-08-02

解説

問題の意味が分からなくてつまずいてしまった問題です。

分かりやすいほうの入力例2を使って解説します。

入力例2

入力例2
5
1
2
3
4
5

出力例2
2
3
6
4
8
12
5
10
15
20


まず、配列「$array = [1,2,3,4,5]」を用意します。

$array[0] = 1
$array[1] = 2
$array[2] = 3
$array[3] = 4
$array[4] = 5

1回転目
$i = 1
$j = 0
echo $array[$i] * $array[$j]."\n";
($array[1] * $array[0])は、 「2 * 1」になります。(出力2)
※配列番号なので、$array[1]は、2です。(ずれているの注意)

内側の$jループ($j < $i)の$iが1なので、1回転目のループが終わります。

2回転目
$i = 2
$j = 0
echo $array[$i] * $array[$j]."\n";
($array[2] * $array[0])は、 「3 * 1」になります。(出力3)

$i = 2
$j = 1
echo $array[$i] * $array[$j]."\n";
($array[2] * $array[1])は、 「3 * 2」になります。(出力6)

内側の$jループ($j < $i)の$iが2なので、2回転目のループが終わります。

3回転目
$i = 3
$j = 0
echo $array[$i] * $array[$j]."\n";
($array[3] * $array[0])は、 「4 * 1」になります。(出力4)

$i = 3
$j = 1
echo $array[$i] * $array[$j]."\n";
($array[3] * $array[1])は、 「4 * 2」になります。(出力8)

$i = 3
$j = 2
echo $array[$i] * $array[$j]."\n";
($array[3] * $array[2])は、 「4 * 3」になります。(出力12)

内側の$jループ($j < $i)の$iが3なので、3回転目のループが終わります。

4回転目
$i = 4
$j = 0
echo $array[$i] * $array[$j]."\n";
($array[4] * $array[0])は、 「5 * 1」になります。(出力5)


このように、1回転ずつインデックスキーが大きくなっていき、そのインデックスキー以下のものを全て掛け算して出力という挙動を繰り返します。

おすすめの記事
スポンサーリンク