Условие
Ю3.45. Гуси и кролики. У гусей и кроликов вместе $2n$ лап. Сколько может быть гусей и кроликов (вывести все возможные сочетания)?
Тесты
n | Кроликов | Гусей | Комментарий |
4 | 0, 2, 4 | 2, 1, 0 | Тест пройден |
3 | 1, 3 | 1, 0 | Тест пройден |
0 | 0 | 0 | Тест пройден |
7 | 1, 3, 5, 7 | 3, 2, 1, 0 | Тест пройден |
Код
1 2 3 4 5 6 7 8 9 10 11 12 |
class Test { static function main() { var g:Int=0; // гусей var k:Int=0; //кроликов var n:Int = 5; while (k <= n/2) { g = (2*n-4*k) >> 1; trace("Гусей - " + g + " Кроликов - " + k); k++; } } } |
Решение
По условию задачи необходимо вывести все возможные варианты сочетаний количества кроликов и гусей.
Для того, чтобы это сделать используется 1 цикл. В нем проверяется условие (количество кроликов не превышает [latex]\frac{n}{2}[/latex]) — количество кроликов не может превышать $n/2$. Изначально переменным $k$ и $g$ присваивается значение 0. В теле цикла считаем количество гусей по формуле $(2n — 4k)/2$.
Если условие выполнено успешно, то на экран выводится один из вариантов сочетаний. После чего цикл повторяется с заданным инкрементом и выводится следующий вариант сочетаний.
Ссылка на условие задания: cpp.mazurok.com
Try Haxe
— Пожалуйста, наберите условие задачи полностью. Конечно, так задача выглядит забавнее, но не понятно, что нужно делать.
—
По программе. Если известно,, что Маша и Петя съели вместе 3 яблока, а Маша съела только одно. Неужели только полным перебором можно установить сколько яблок съел Петя? Попробуйте найти другое, более простое решение.
Вы не исправили условие (пропущено слово «лап» после [latex]2n[/latex])
Я бы посоветовал использовать в коде битовый сдвиг вправо вместо деление на два. Тогда нет нужды преобразовывать дробные числа в целочисленные.
Вы поменяли код решения задачи, но объяснение решения осталось прежним.
Кстати, ответ-то сколько?