Набольшая сумма при эксплуатации системы
Как поэксплуатировать систему так, чтобы получить наибольшую возможную сумму на банковском счету аккаунта?
Какие рекомендации по реализации вы бы предложили банковским сотрудникам?
package main
import (
"fmt"
"os"
"strconv"
)
var bankAccount uint16 = 1337
func withdraw(amountToWithdraw uint16) {
if amountToWithdraw > 0 {
bankAccount -= amountToWithdraw
}
}
func main() {
if len(os.Args) < 2 {
fmt.Println("Usage: go run main.go <amount>")
return
}
amountStr := os.Args[1]
amount, err := strconv.ParseUint(amountStr, 10, 16)
if err != nil {
fmt.Println("Invalid amount")
return
}
withdraw(uint16(amount))
fmt.Print(bankAccount)
}
Ответы (1 шт):
Автор решения: Четвёртый Кэп
→ Ссылка
Решением данного вопроса является число на 1 большее, чем банковский счёт.
bankAccount := 1337, следовательно amountToWithdraw := 1338.
Вот пример данной реализации : Пример на GO.
Почему так происходит? Дело в том, что числа в uint начинаются с "0", следовательно если брать меньшее число, то мы как бы выйдя за левую границу окажемся на правой, где и находится самое большое число, которое только может храниться в данной переменной.