#Description
给一巧克力,问你一片一片分开和用刀切分别要做多少步?
#Algorithm
一片一片就是NMK-1
然后用刀切每次可以至少减少一半,那也就是二进制的位数
python的bin()函数可以将int转化为二进制的str不过有0b所以len要减2
#Code
def binlen(x):
if x:
return len(bin(x)) - 2
return 0
def solve():
n, m, k = map(int, input().split())
ans1 = n * m * k - 1
n, m, k = n - 1, m - 1, k - 1
ans2 = sum(map(binlen, [n, m, k]))
return ans1, ans2
t = int(input())
for i in range(1, t+1):
ans1, ans2 = solve()
print("Case #{}: {} {}".format(i, ans1, ans2))
本文介绍了一种关于如何高效切割巧克力的算法。通过分析一块巧克力,探讨了将其分成多个小块所需的最少步骤。文章提出了一片一片分开和用刀切两种方法,并详细解释了每种方法的计算方式。对于一片一片分开的方法,所需步骤为NMK-1;而对于用刀切的方法,可以通过计算二进制位数得出最少步骤。

被折叠的 条评论
为什么被折叠?



