![]() |
Задачка для 3 класса школы
Вобщем дочке моей знакомой в итоговой контрольной на дом задали задачку по математике. Смысл такой:
1 2 3 4 5 6 7 8 9 = 99 Между цифрами нужно расставить знаки ( + - * / ), причем нельзя пользоваться скобками, и чтобы в итоге получился правильный ответ. Один из ответов: 1*2+3+4+5+6+7+8*9. Таких ответов несколько. Так вот, дам плюсики тому, кто составит самый простой php код, выводящий все возможные варианты решения этой задачи. |
Дети в 3 классе уже знакомы с дробями и отрицательными числами или нет ещё?
|
а сколько плюсиков дашь?
|
astrologer Возможность ставить минус - подразумевает известность отрицательных чисел.
dk-ne Можно побрутить правильные наборы, но это будет слишком неспортивно. Тем не менее: PHP код:
Код:
1+2+3+4*5-6+7+8*9 = 99 |
В целом, задача решена. Спс. Но все-таки здесь перебор, а не просмотр всех вариантов. 3++ добавил
|
Цитата:
|
У меня получился такой код. Но почему-то он повторяет результаты. Хотя вроде счетчик изменяется каждый раз после прохождения цикла на 1, а значит результаты деления всегда различны. Кто-то поймет почему?
set_time_limit(0); $znaki = array ('+','-','*','/'); $odin = array (' ','-'); $SUM = 0; $n = 0; $end = (bcpow(4, 9, 0) - 1); $sss = 0; do { $sum = $SUM; $a1 = $sum % 4; $sum = ($sum - $a1)/ 4; $a1 = $znaki[$a1]; $a2 = $sum % 4; $sum = ($sum - $a2)/ 4; $a2 = $znaki[$a2]; $a3 = $sum % 4; $sum = ($sum - $a3)/ 4; $a3 = $znaki[$a3]; $a4 = $sum % 4; $sum = ($sum - $a4)/ 4; $a4 = $znaki[$a4]; $a5 = $sum % 4; $sum = ($sum - $a5)/ 4; $a5 = $znaki[$a5]; $a6 = $sum % 4; $sum = ($sum - $a6)/ 4; $a6 = $znaki[$a6]; $a7 = $sum % 4; $sum = ($sum - $a7)/ 4; $a7 = $znaki[$a7]; $a8 = $sum % 4; $sum = ($sum - $a8)/ 4; $a8 = $znaki[$a8]; $a9 = $sum % 4; $sum = ($sum - $a9)/ 4; $a9 = $odin[$a9]; $SUM++; eval("\$otv = {$a9}1{$a8}2{$a7}3{$a6}4{$a5}5{$a4}6{$a3}7{$a2}8{$ a1}9;"); if ($otv == 99) { echo "{$a9}1{$a8}2{$a7}3{$a6}4{$a5}5{$a4}6{$a3}7{$a2}8{ $a1}9<br>"; $sss++; } } while ($n <= $end); echo "Итого $sss вариантов"; |
dk-ne Ээээ, те же лыжи, только анально. Тот же перебор, только сделанный одним циклом. А ошибка - вы не инкрементируете $n. Вот если бы вы могли найти решение аналитически - тогда бы еще можно было подискутировать
|
Цитата:
|
dk-ne http://php.net/foreach Ну или английский учите.
В условии выхода из цикла - используется $n - оно нигде не увеличивается |
| Время: 19:37 |