Solved ProjectEuler/038,104
This commit is contained in:
		
							
								
								
									
										19
									
								
								ProjectEuler/038/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ProjectEuler/038/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
title: What is the largest 1 to 9 pandigital that can be formed by multiplying a fixed number by 1, 2, 3, ... ?
 | 
			
		||||
url: http://projecteuler.net/problem=38
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
    Take the number 192 and multiply it by each of 1, 2, and 3:
 | 
			
		||||
    192 x 1 = 192
 | 
			
		||||
    192 x 2 = 384
 | 
			
		||||
    192 x 3 = 576
 | 
			
		||||
    By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated product of 192 and (1,2,3)
 | 
			
		||||
    The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5).
 | 
			
		||||
    What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, ... , n) where n  1?
 | 
			
		||||
      
 | 
			
		||||
solution: |
 | 
			
		||||
  Bruteforce
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: php
 | 
			
		||||
							
								
								
									
										27
									
								
								ProjectEuler/038/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ProjectEuler/038/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
<?php
 | 
			
		||||
function pandigital($number) {
 | 
			
		||||
		$array = count_chars($number,1);
 | 
			
		||||
		ksort($array);
 | 
			
		||||
		if($array == array(49=>1,50=>1,51=>1,52=>1,53=>1,54=>1,55=>1,56=>1,57=>1)) { return true;} else { return false; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
while(true) {
 | 
			
		||||
$value++;
 | 
			
		||||
 | 
			
		||||
	$test = array(1,2);
 | 
			
		||||
	$key = 2;
 | 
			
		||||
	while(true) {
 | 
			
		||||
		$new = array();
 | 
			
		||||
		foreach($test as $p) {
 | 
			
		||||
			$new[] = $value * $p;
 | 
			
		||||
		}
 | 
			
		||||
		$var = implode('',$new);
 | 
			
		||||
		if(strlen($var) != 9) { break; }
 | 
			
		||||
		if(strlen($var) == 9 AND pandigital($var)) { $good[] = $var; break; }
 | 
			
		||||
		$test[] = $key++;
 | 
			
		||||
	}
 | 
			
		||||
	if($value > 9999) { break; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rsort($good);
 | 
			
		||||
echo $good[0];
 | 
			
		||||
							
								
								
									
										16
									
								
								ProjectEuler/104/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								ProjectEuler/104/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
title: Finding Fibonacci numbers for which the first and last nine digits are pandigital.
 | 
			
		||||
url: http://projecteuler.net/problem=104
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
  The Fibonacci sequence is defined by the recurrence relation:
 | 
			
		||||
  Fn = Fn1 + Fn2, where F1 = 1 and F2 = 1.
 | 
			
		||||
  It turns out that F541, which contains 113 digits, is the first Fibonacci number for which the last nine digits are 1-9 pandigital (contain all the digits 1 to 9, but not necessarily in order). And F2749, which contains 575 digits, is the first Fibonacci number for which the first nine digits are 1-9 pandigital.
 | 
			
		||||
  Given that Fk is the first Fibonacci number for which the first nine digits AND the last nine digits are 1-9 pandigital, find k.
 | 
			
		||||
  
 | 
			
		||||
solution: |
 | 
			
		||||
  Bruteforce
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Bruteforce - Sooooo slow
 | 
			
		||||
    language: php
 | 
			
		||||
							
								
								
									
										20
									
								
								ProjectEuler/104/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ProjectEuler/104/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
function pandigital($num) {
 | 
			
		||||
	for ($i = 1; $i <= 9; $i++) {
 | 
			
		||||
		if(strpos($n,(string)$i) === false) {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
$var = 1;
 | 
			
		||||
$k = 1;
 | 
			
		||||
while(true) {
 | 
			
		||||
	$k++;
 | 
			
		||||
	$new = bcadd($var,$prev);
 | 
			
		||||
	$prev = $var;
 | 
			
		||||
	$var = $new;
 | 
			
		||||
	
 | 
			
		||||
	if(pandigital(substr($var,-9)) AND pandigital(substr($var,0,9))) { echo $k; die; }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user