0 ) return $movesCache[$length]; $maxMoves = 0; $moves = 0; $retMoves = 0; for ($i=1; $i <= floor($length/2); $i++){ if (($length % $i) == 0){ $moves = 1 + ($length/$i) * getMoves($i); if ($moves > $maxMoves){ $maxMoves = $moves; } } } $movesCache[$length] = $maxMoves; return $maxMoves; } function longestSequence($a) { // Return the length of the longest possible sequence of moves. $moves = 0; foreach ($a as $l){ $moves += getMoves($l); } return $moves; } fscanf($handle, "%i",$n); $a_temp = fgets($handle); $a = explode(" ",$a_temp); $a = array_map('intval', $a); $result = longestSequence($a); echo $result . "\n"; ?>