Jimmy is a truck driver who delivers mineral water. He loads the water from a warehouse and distributes it within many stores in the town. Sometimes when Jimmy goes to the warehouse there is not enough water to full the truck which makes him angry. He wants to go for delivery only if the truck is full.
You can help him if you write a program that checks if it is possible to load the whole truck.
The mineral water is available in two types of bottles - 1 liter and 5 liters. Jimmy always tries to load as much of the big bottles first and then adds small bottles. Given the capacity of the truck and the available bottles in the warehouse you should calculate the number of small bottles that he will load. If there are not enough small bottles the result should be -1.
Input
Read from the standard input:
The number of small bottles in the warehouse - integer number
The number of big bottles in the warehouse - integer number
The capacity of the truck - integer number
Output
Print to the standard output:
One line of output:
the number of small bottles he will deliver.
-1 if not possible to fill completely the truck.
Sample Tests
Input
3
1
8
Output
3
Input
3
1
9
Output
-1
Explanation
He can load 9 liters in the truck. If he gets 1 big bottle and 3 small bottles, he will have 8 liters and space for 1 more, so he will not make a delivery.
Тази задача, не съм я решавал и нямам линк до нея, но не изглежда тегава.
Имаш 3 варианта
1) Капацитета е по-голям от товара, връщаш -1.
2) Капацитета е колкото товара, връщаш малките бутилки.
3) Капацитета е по-малак от товара, връщаш натоварените малки бутилки.
Може да има и 4ти вариант - аз да не съм разбрал също условието, но нямам достъп до задачата за да проверя.
Това би трябвало да ти е решението.
П.С:
Извинявам се на тези който са мат маниаци за допълнителните скоби, наясно съм, че умножението ще е първо, но съм свикнал така да си разписвам.
Ако имаш предвид да махна дясната част от els if ||, пак не става.
Може би ако има случай капацитет 10 и има въведени 2 малки 2 големи, ще върне едната голяма и ще стане 5 + 2 = 7 и сътветно ще принтира -1, понеже пише че работи с големи и малки. След малко ще пробвам, че решавам другите.
Страхотна дискусия е станала.
Като цяло е супер, че колегите са споделили два подхода:
Решение с вложени if-ове
Решение с цикли
Задачата на пръв поглед изглежда лесна за решение с if-ове и първоначално е най-добре да се разпишат всички възможни варианти преди да се премине към писане на код:
/**
* All cases
* 1. Truck capacity is equal to all big bottles
* 2. Truck capacity is more than all bottles
* 3. Truck capacity is less than all big bottles
* 3.1 Truck capacity is not equally divided to the big bottles
* Тук има още няколко подслучаи - какво правим с остатъка?
* 3.1.1
* 3.1.2
* 3.1.3
* 4. Truck capacity is more than all big bottles
* 4.1 The small bottles are less than the left space
* 4.2 The small bottles are equal or more than to the left space
*/
Препоръчвам ти да си разписваш и повече променливи.
Ето пример за четим код:
Scanner scanner = new Scanner(System.in);
int allSmallBottles = Integer.parseInt(scanner.nextLine());
int allBigBottles = Integer.parseInt(scanner.nextLine()) * 5;
int truckCapacity = Integer.parseInt(scanner.nextLine());
int allBottles = allSmallBottles + allBigBottles;
int freeCapacity = truckCapacity - allBigBottles;
int truckIsFull = 0;
int truckNotFull = -1;
if (truckCapacity == allBigBottles){
System.out.println(truckIsFull);
}