Найдите все счастливые билеты. Счастливый билет - это билет, в котором сумма первых трех цифр его номера равна сумме вторых трех цифр его номера. Вот моё решение: PHP: function lucky($num) { $arr = str_split($num, 3); $arr[0] = str_split($arr[0], 1); $arr[1] = str_split($arr[1], 1); if (array_sum($arr[0]) == array_sum($arr[1])) { return $num; } } function generationNew() { $num = 0; $result = []; for ($i=1; $i <= 999999; $i++) { $num += 1; switch (strlen($num)) { case '1': $result[] = '00000'.$num; break; case '2': $result[] = '0000'.$num; break; case '3': $result[] = '000'.$num; break; case '4': $result[] = '00'.$num; break; case '5': $result[] = '0'.$num; break; default: $result[] = $num; break; } } return $result; } function test($arr) { $result = []; for ($i=0; $i < count($arr); $i++) { if (!empty(lucky($arr[$i]))) { $result[] = lucky($arr[$i]); } } return $result; } var_dump(test(generationNew()));
"первых трех цифр его номера равна сумме вторых трех" - 6-ть символов. Выходит, что диапазон для низ - 000001 до 999999
PHP: $num = 999999; function happy($num){ $count=0; for($i=1;$i<=$num;$i++){ $str =(string)$i; if(strlen($str)<6){ for($j=strlen($str);$j<6;$j++){ $str='0'.$str; } } $arr = $str; If($arr[0]+$arr[1]+$arr[2] == $arr[3]+$arr[4]+$arr[5]){ $count++; echo 'Билет номер: '.$str.'<br>'; } } echo 'Количество счсатливых билетов :'.$count; } echo happy($num); Вот что родил я
Приятно, когда ответ на твой вопрос приходит, пусть и через 9 месяцев Но раз мы взялись оптимизировать, мой вариант: PHP: function happy(){ $count= 0; for($i=1;$i<=999999;$i++){ $str = (string)$i; if(strlen($str)<6){ for($j=strlen($str);$j<6;$j++){ $str='0'.$str; } } If($str[0]+$str[1]+$str[2] == $str[3]+$str[4]+$str[5]){ $count++; echo 'Билет номер: '.$str.'<br>'; } } echo 'Количество счастливых билетов: '.$count; } echo happy();