Задача
Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее [latex]30 [/latex] кг. В первых классах школы учится [latex]n[/latex] учеников. Стакан молока имеет емкость [latex]200 [/latex] мл, а упаковки молока — [latex]0,9 [/latex] л. Определить количество дополнительных пакетов молока и пирожков, необходимых каждый день.
Входные данные
В первой строке задано целое число [latex]n[/latex] [latex](0 < n ≤ 100)[/latex]. В следующей строке идут [latex]n[/latex] положительных действительных чисел – массы первоклассников.
Выходные данные
В одной строе вывести два целых числа — количество дополнительных пакетов молока и пирожков, необходимых каждый день.
Тесты
# | Входные данные | Выходные данные |
---|---|---|
1 | 4 30 36 29 47 | 1 1 |
2 | 5 30 36 29 47 26 | 1 2 |
3 | 8 30 36 29 47 26 27 30 31 | 1 3 |
4 | 1 29 | 1 1 | 5 | 5 26 27 28 29 25 | 2 5 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import java.util.*; import java.lang.*; import java.io.*; import java.text.DecimalFormat; class Main { public static void main (String[] args) throws java.lang.Exception { DecimalFormat format = new DecimalFormat(); format.setDecimalSeparatorAlwaysShown(false); double children ; double cakes = 0 ; double milk = 0; double child ; Scanner in= new Scanner(System.in); children= in.nextDouble(); while (in.hasNextDouble()){ child= in.nextDouble(); if ( child < 30) { cakes++; milk += 2; } } System.out.print(format.format(Math.ceil(milk/9))); System.out.print(" "); System.out.print(format.format(cakes)); } } |
Решение
Для решения задачи мы должны узнать: сколько упаковок молока и пирожков нужно для детей.
Чтобы узнать количество пирожков мы заводим счетчик, который увеличивает на единицу, если появился подходящий ребенок.
А для молока будем использовать целые числа (0,2 домножим на 10 и 0,9 также домножим на 10). Будем считать сколько всего тратится молока, затем поделим на 9 и узнаем сколько пачек молока нужно. Результат подсчета количества молока может не быть целым, соответственно придется округлять вверх.
Рассмотрим аспекты синтаксиса:
- Функция округления вверх:
- В результате выполнения программы мы получим данные в виде [latex]n.0[/latex], где [latex]n[/latex]- любое целое число. Ответ является правильным, но, при проверке кода с помощью сайта e-olymp, мы сталкиваемся с проблемой, что во всех тестах ошибка. Для того, чтобы этого избежать используем:
1234DecimalFormat format = new DecimalFormat();format.setDecimalSeparatorAlwaysShown(false);format.format(Math.ceil(milk/9));
Данная ошибка возникла из-за того, что был использован тип double.
1 |
Math.ceil(); |
Ссылки
Задача на e-olymp
Код задачи на ideone