【二重ループメニュー】> 【活用編:三角形の探索】STEP: 4 log2 (paizaランク C 相当) [難易度: 1712 ±16]
※リンク先へ移動するためには[paiza]へのログインが必要です。
整数 N が与えられるので、1 × 2 × ... × (N-1) × N を最大で何回 2 で割ることができるかを求めてください。
入力値(例)
4
出力値(例)
3
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $n = trim(fgets(STDIN)); $flag = 0; for($i = 1; $i <= $n; $i++) { $buf = $i; while($buf % 2 == 0) { $flag++; $buf /= 2; } } echo $flag. "\n"; ?> |
解説
入力値nの階乗が2で何回割れるかという問題です。
入力値が4の場合、
1*2*3*4 = 24
24/2 = 12
12/2 = 6
6/2 =3
24は2で3回割れるので、出力値は3になります。