Здравейте,
в момента решавам задавата “Game”, със следното условие:
Game
Three friends came up with a game for having fun in the break between the classes. One of them says a three-digit number and the others use it to form a mathematical expressions by using operators for sum and multiplication between the digits of that number.
The winner is the first one who founds the biggest number that is a result of the above mentioned rules.
Write a program ‘game’, which prints out that biggest number.
Input
Read from the standard input
- The first line of the input will be positive three-digit number N .
Output
Print on the standard output
- The result should be the calculated biggest number.
Sample tests
Input:
185
Output
41
Според мен тук има грешка в условието, защото - ако следваме описанието - възможно най-голямото число тук би било 48=(1+5)x8, а не 41=5x8+1.
Или аз пропускам да видя нещо…?
Мерси предварително!
1 Like
Задължително първо се извършва умножението и след това е събирането (освен ако не отделиш операциите със скоби, както в първия пример). Затова и отговора е 41, а не 48.
1 Like
Добреее, ако си прав това би означавало, че не използваме скоби, и че имаме 5 варианта за комбинации на трите цифри, а именно:
System.out.println(Math.max(Math.max(Math.max(Math.max((one+two+three), (one x two x three)),(one x two+three)),(one+two x three)),(three x one x two)));
използвайки тази комбинация обаче, три от десет случая в системата излизат с грешен отговор. Това за мен означава, че има и варианти, където цифрите трябва да се комбинират и със скоби…което ме връща на първоначалния проблем.
“One of them says a three-digit number and the others use it to form a mathematical expressions by using operators for sum and multiplication between the digits of that number.” - Не трябва да разместваш цифрите, само да поставяш знаци за умножение и събиране между тях, и така имаш само четири комбинации - a + b + c, a + b * c, a * b + c и a * b * c.
1 Like