题解:SP9935 BC - Break the Chocolate
第一问,我们要将巧克力分成 \(1\times 1\times 1\) 的小块,每次分两半,减掉总共大的 \(1\) 块,答案为 \(LWH-1\)。
第二问,只要每次从中间切后把两块巧克力叠起来切即可,答案为 \(\lceil\log_2L\rceil+\lceil\log_2W\rceil+\lceil\log_2H\rceil\)。
代码:
#include<bits/stdc++.h>
int log2(int x) {
int pwr=1;
int res=0;
while(pwr<x) {
pwr<<=1;
res++;
}
return res;
}
int main(){
int T;
scanf("%d",&T);
for (int _cs=1;_cs<=T;_cs++){
int N,M,K;
scanf("%d %d %d",&N,&M,&K);
long long volume=N*M*K;
printf("Case #%d: %lld %d\n",_cs,volume-1,log2(N)+log2(M)+log2(K));
}
}

浙公网安备 33010602011771号