Задача: Смена операции
https://t.me/Golang_googleУсловие: дается целое число, нужно переконвертировать данное число в сумму, слагаемых должно быть не менее двух. А само разложение должно осуществляться таким образом, что произведение слагаемых будет максимальным.
В результате необходимо получить это самое произведение.
Пример:
Ввод: n = 2
Вывод: 1
Объяснение: 2 = 1 + 1, 1 × 1 = 1.
Ввод: n = 10
Вывод: 36
Объяснение: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.
Решение:
Go
func integerBreak(ni int) int {
var (
maxPos float64 = 0
i float64 = 1
j float64 = 1
n float64 = float64(ni)
)
for ; n / i != 1 ; i++ {
for ; j * i < n ; j++ {
val := n - j * i
multi := math.Pow(i, j) * val
if multi > maxPos {
maxPos = multi
}
}
j = 1
}
return int(maxPos)
}