我正在进行类似的任务:
银行有3比索和5比索的无限量供应。显示使用这两种类型的票据,银行可以支付大于7的任意数量的比索。
答案是:
银行可以通过支付一张3比索钞票和一张5比索钞票支付8比索。
银行可以通过支付三张3比索票据支付9比索。
银行可以通过支付两张5比索票据支付10比索。
银行可以通过支付3比索票据支付11或更多比索,直到只剩下8,9或10比索,然后使用上述策略之一。 (如果从11号或更大的数字中减去三分,你最终会到达8,9或10之一。)
我正在尝试在Ruby
计划中实施此功能。
到目前为止,我已完成以下工作:
class Money
def initialize(price)
@price = price.to_i
validate(@price)
end
def validate(price)
if price >= 8
calculate(price)
elsif price < 8
puts "Minimum ammount is 8 pesos"
end
end
def calculate(price)
if price%5 === 0
fives = price/5
threes = 0
end
result(fives, threes)
end
def result(fives, threes)
puts "#{fives} five peso notes, #{threes} three peso notes."
end
end
m = Money.new(ARGV.first)
你能帮我把这个数学任务放在程序中吗?谢谢。
答案 0 :(得分:0)
def count(price)
t = 0
if price >= 11
t = (price - 8) / 3
price -= t * 3
end
if price == 8
[t + 1, 1]
elsif price == 9
[t + 3, 0]
elsif price == 10
[t, 2]
else
fail "price too small"
end
end
threes, fives = count(42)
puts "#{fives} five peso notes, #{threes} three peso notes."