Example #1
0
    $divsors = array();
    $sqrt_n = sqrt($n);
    for ($i = 1; $i <= $sqrt_n; $i++) {
        if ($n % $i == 0) {
            $divisors[] = $i;
            $divisors[] = $n / $i;
        }
    }
    return array_unique($divisors);
}
// loop houses until > target
$house = 0;
$elves = array();
while (!isset($target_met)) {
    $house++;
    $e = get_divisors($house);
    foreach ($e as $key => $elf) {
        if (!isset($elves[$elf])) {
            $elves[$elf] = 1;
        } else {
            $elves[$elf]++;
        }
        if ($elves[$elf] > 50) {
            unset($e[$key]);
        }
    }
    $presents = array_sum($e) * 11;
    if ($presents >= $target) {
        $target_met = true;
    }
}
Example #2
0
	{
		if(($house % $e) == 0) $presents += $e*10;
	}
	if($presents >= $target) $target_met = true; 
}
*/
// function to get divisors of an integer
// still slow, but fast enough to crack the answer
function get_divisors($n)
{
    $divsors = array();
    $sqrt_n = sqrt($n);
    for ($i = 1; $i <= $sqrt_n; $i++) {
        if ($n % $i == 0) {
            $divisors[] = $i;
            $divisors[] = $n / $i;
        }
    }
    return array_unique($divisors);
}
// loop houses until > target
$house = 0;
while (!isset($target_met)) {
    $house++;
    $presents = array_sum(get_divisors($house)) * 10;
    if ($presents >= $target) {
        $target_met = true;
    }
}
// output answer
echo "Answer: " . $house;