# Break the Chocolate

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 46    Accepted Submission(s): 12

Problem Description

Benjamin is going to host a party for his big promotion coming up.
Every party needs candies, chocolates and beer, and of course Benjamin has prepared some of those. But as everyone likes to party, many more people showed up than he expected. The good news is that candies are enough. And for the beer, he only needs to buy some extra cups. The only problem is the chocolate.
As Benjamin is only a 'small court officer' with poor salary even after his promotion, he can not afford to buy extra chocolate. So he decides to break the chocolate cubes into smaller pieces so that everyone can have some.
He have two methods to break the chocolate. He can pick one piece of chocolate and break it into two pieces with bare hand, or put some pieces of chocolate together on the table and cut them with a knife at one time. You can assume that the knife is long enough to cut as many pieces of chocolate as he want.
The party is coming really soon and breaking the chocolate is not an easy job. He wants to know what is the minimum number of steps to break the chocolate into unit-size pieces (cubes of size 1 × 1 × 1). He is not sure whether he can find a knife or not, so he wants to know the answer for both situations.

Input
The first line contains an integer T(1<= T <=10000), indicating the number of test cases.
Each test case contains one line with three integers N,M,K(1 <=N,M,K <=2000), meaning the chocolate is a cube of size N ×M × K.

Output
For each test case in the input, print one line: "Case #X: A B", where X is the test case number (starting with 1) , A and B are the minimum numbers of steps to break the chocolate into N × M × K unit-size pieces with bare hands and knife respectively.

Sample Input
2 1 1 3 2 2 2

Sample Output
Case #1: 2 2 Case #2: 7 3

Source

#include<stdio.h>
#include<math.h>

int main()
{
__int64 n,m,k,ans1,ans2,t,T;
scanf("%I64d",&T);
for(t=1;t<=T;t++)
{
scanf("%I64d%I64d%I64d",&n,&m,&k);
ans1=n*m*k-1;
ans2=(__int64)(ceil(log(n*1.0)/log(2.0))+ceil(log(m*1.0)/log(2.0))+ceil(log(k*1.0)/log(2.0)));
printf("Case #%I64d: %I64d %I64d\n",t,ans1,ans2);
}
return 0;
}

• 本文已收录于以下专栏：

## hdu 4112 2011 ACM成都现场赛B

• a402630999
• 2012年01月18日 11:03
• 1212

## 2011ACM成都赛区现场赛B题 (水题) (SPOJ9935)

• lencle
• 2011年11月08日 23:21
• 1288

## 【水题】2011 Asia ChenDu Regional Contest 成都现场赛 hdu 4112

• leolin_
• 2011年11月09日 15:25
• 977

## 2016 ICPC 大连站解题报告

J一眼题
• woshirenNo01
• 2016年11月06日 17:02
• 780

## 2016ACM/ICPC亚洲区青岛站 ABC题题解

2016ACM/ICPC亚洲区青岛站 ABC题题解
• ly59782
• 2016年11月20日 13:34
• 785

## B - Break the Chocolate HDU - 4112

• qq_38158040
• 2017年07月25日 09:49
• 74

## 2011ACM成都赛区现场赛E题 (2-sat) (SPOJ9939)

• lencle
• 2011年11月08日 23:24
• 1449

## 【HDU 5980 Find Small A】+ 2016ACM/ICPC亚洲区大连站-重现赛（感谢大连海事大学）

Find Small A Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) T...
• WYK1823376647
• 2016年11月12日 17:09
• 432

## 2011ACM成都赛区现场赛H题 (非递归dfs) (hdu4118)

• lencle
• 2011年11月10日 20:48
• 3650

## 2011ACM 成都现场 I题

• dingyaguang117
• 2011年11月08日 19:46
• 875

举报原因： 您举报文章：HDU 4112 2011ACM成都现场赛B 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)