Тръби в басейн
Здравейте пак. Мъча се над една задача. Входните данни и изходните данни са 1:1, но judge ми дава 76%. Идея къде пропускам нещо ?
Задача 2. Тръби в басейн
Басейн с обем V има две тръби от които се пълни. Всяка тръба има определен дебит (литрите вода минаващи през една тръба за един час). Работникът пуска тръбите едновременно и излиза за N часа. Напишете програма, която изкарва състоянието на басейна, в момента, когато работникът се върне.
Вход
От конзолата се четат четири реда:
Първият ред съдържа числото V – Обем на басейна в литри – цяло число в интервала [1…10000].
Вторият ред съдържа числото P1 – дебит на първата тръба за час – цяло число в интервала [1…5000].
Третият ред съдържа числото P2 – дебит на втората тръба за час– цяло число в интервала [1…5000].
Четвъртият ред съдържа числото H – часовете които работникът отсъства – число с плаваща запетая в интервала [1.0…24.00]
Изход
Да се отпечата на конзолата едно от двете възможни състояния:
До колко се е запълнил басейна и коя тръба с колко процента е допринесла. Всички проценти се свеждат до цяло число (без закръгляне).
"The pool is [x]% full. Pipe 1: [y]%. Pipe 2: [z]%."
Aко басейнът се е препълнил – с колко литра е прелял за даденото време, число с плаваща запетая
"For [x] hours the pool overflows with [y] liters."
* Имайте предвид, че поради свеждането до цяло число се губят данни и нормално сборът на процентите да е 99%, а не 100%.
Примерен вход и изход
Вход Изход Обяснения
1000
100
120
3 The pool is 66% full. Pipe 1: 45%. Pipe 2: 54%. За 3 часа:
Първата тръба е напълнила – 300 л.
Втората тръба е напълнила – 360 л.
Общо – 660 л. < 1000 л. => 66% са запълнени
Първата тръба е допринесла с 45% (300 от 660 л.).
Втората тръба е допринесла с 54% (360 от 660 л.).
100
100
100
2.5 For 2.5 hours the pool overflows with 400 liters. За 2.5 часа:
Първата тръба е напълнила – 250 л.
Втората тръба е напълнила – 250 л.
Общо – 500 л. > 100 л. => 400 л. са преляли.
import java.util.Scanner; public class Pool { public static void main (String[] args ) { Scanner scanner = new Scanner(System.in); int V = Integer.parseInt(scanner.nextLine()); int P1 = Integer.parseInt(scanner.nextLine()); int P2 = Integer.parseInt(scanner.nextLine()); double H = Double.parseDouble(scanner.nextLine()); int percFirstPipe = (int) (P1*H/(P1*H+P2*H) * 100); int percSecondPipe =( int) (P2*H/(P1*H+P2*H)*100); int foolPool = (int) ((P1*H+P2*H)/ V * 100); double extLitres = (P1*H+P2*H) - V; if ((P1*H+P2*H) <= V) { System.out.println("The pool is " + foolPool + "%" + " full. Pipe 1: " + percFirstPipe + "%. Pipe 2: " + percSecondPipe + "%." ); } else { System.out.println("For " + H + " hours the pool overflows with " + extLitres + " liters."); } } }
Не е много честно с тоя judge, защото не пише в условието по какъв начин да се реши. С входящите данни всички стойности излизат, ама judge не дава 100%
Така е, за това много се блъсках с тази задача, защото в условието пише -
·Aко басейнът се е препълнил – с колко литра е прелял за даденото време, число с плаваща запетая
Но никъде не е описано часовете [x], как трябва да са на изхода, а само за литрите.