描述
传送门:openjudge
罗海川学长和孙其灵学长都喜欢吃巧克力,巧克力真的很好吃。我们团队的队员也很喜欢吃,但是由于人数比较多,而他们又不想再去买巧克力,所以两位学长决定将一个$N \times M \times K$的长方体的巧克力分解成111的正方体小块,这样就可以分给更多的人了。但是两个学长分解巧克力的方法不同,罗海川学长由于没有工具,所以只能用手掰,可以将一块掰成两块。而孙其灵学长事先有准备,有一把足够长的刀,所以孙其灵学长用刀切,可以将一些切成两半。现在你能告诉我们罗海川学长和孙其灵学长将巧克力都分解成111的正方体小块最少需要多少步吗?
Input
输入包括多组测试数据。
输入三个数 $N,M,K(1 <=N,M,K <=2000)$在一行,用空格隔开。
表示巧克力的大小$N \times M \times K$。
Output
分别输出罗海川学长和孙其灵学长分解巧克力所用的最小步数。
Examples
intput
1
21 1 3
2 2 2output
1
22 2
7 3
思路
- 没刀的情况很简单,就是$N \times M \times K-1$。
- 有刀的情况也很简单,单独看每一个纬度,要切成1,就每次对半切,取两半较大的继续对半切,另一半就不用管了(显然小的那一半肯定可以叠在大的上面切完)。所以易得答案就是$\lceil \log_2N \rceil+\lceil \log_2M \rceil + \lceil \log_2K \rceil$。
代码
1 |
|