321
社区成员




小明是一名快递员,他现在手上一共有N个快件需要运送。但是货车有限,所以我们希望用最少的货车来进行工作。现在已知,一辆车的限定额度为最多放置K件货物。此外,小明很不喜欢13这个数字,所以他不希望任何一辆货车中的货物数量为13。 现在小明想要知道,最少使用多少辆货车能够将这N个快件都放置到货车上。
因为存在多组输入,每次输入两个数据,所以需要自行捕捉输入多少次,不过 python 可以直接一次性接收所有输入,嗯,这就很舒服了
import sys
lines = sys.stdin.readlines()
for row in lines:
n,k = map(int,row.split())
ans = n // (k if k != 13 else 12)
less = n % (k if k != 13 else 12)
ans += 0 if less ==0 else (1 if less != 13 else 2)
print(ans)
因为 js 没有像 py 一样的,可以将所有输入一次性接收的方法,所以,用死循环来进行输入,到没有输入时用异常跳出
while (1){
try {
arr = readline().split(' ').map(x => parseInt(x))
n = arr[0],k = arr[1]
ans = Math.floor(n / (k != 13 ? k : 12))
less = n % (k != 13 ? k : 12)
ans += less == 0 ? 0 : (less != 13 || less > 14 ? 1 : 2)
print(ans)
}
catch(e){
break
}
}
LZ的思路应该是先判定每一个货车可以装多少货(如果最多装13件,那装到第12件就开始换车),
然后看剩下不成车的有多少件。
如果一件不多,那ans直接就是结果。
如果<>13件,那就加一个车送走
如果恰好是13件,那就再拆一下,结果得加2个车。
但是应该有一个Bug,就是当K>14的时候,如果最后一个车子恰好有13个货物,则可以从倒数第二个货车挪一个过来,这样两台货车都可以避免13这个数字。
程序中好像没有考虑到这一点。