输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果
输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1
20
3
import sys
N=int(input())
res={}
for i in range(0,17):
for j in range(0,13):
a=i*6+j*8
if(1<=a<=100):
if(a)in res.keys():res[a]=min(res[a],i+j)
else:res[a]=i+j
if N in res.keys():print(res[N])
else:print(-1) n = int(input())
dp = [float('inf')] * (n+1)
if n+1 > 6:
dp[6] = 1
if n+1 > 8:
dp[8] = 1
for i in range(n+1):
if i + 6 <= n:
if dp[i+6] > dp[i] + 1:
dp[i + 6] = dp[i] + 1
if i + 8 <= n:
if dp[i + 8] > dp[i] + 1:
dp[i + 8] = dp[i] + 1
print(dp[n] if dp[n] != float('inf') else -1)
#SB系统,TM一直以为不需要输入 def coinChange(coins, amount):
if __name__ == "__main__":
a = raw_input()
a = int(a)
min_ = 100
times = 0
for i in range(a / 8 + 1):
rest = a - i * 8
if(rest % 6 == 0):
times = i + rest /6
min_ = min(times,min_)
if min_ == 100:
print -1
else:
print min_
稍做分析发现 6 和 8比较特殊,大于10的偶数都能够满足要求