B

来源:互联网 发布:firefox json美化插件 编辑:程序博客网 时间:2024/04/30 12:07

题目链接:点击打开链接

题目大意:将一块N*M*K的巧克力分解成1*1*1的大小块,按照手工分和用刀切两种方式,问分别最少需要多少步?

手工的方法直接体积减一便是答案,而刀切的方法找规律,一个数一个数的找便会发现规律,详情见代码。


#include <cstdio>#include <iostream>#include <string>#include <cstring>#include <algorithm>#include <iomanip>#include <cmath>using namespace std;typedef long long int ll;ll num(ll n){    ll cnt=0,tmp=2;    while(n>=tmp){        cnt++;        tmp=tmp*2;        if(n>tmp/2&&n<tmp) ++cnt;    }    return cnt;}int main(){    int n; cin>>n;    int kase=0;    while(n--){        ll n,m,k;        kase++;        cin>>n>>m>>k;        cout<<"Case #"<<kase<<": "<<n*m*k-1<<" "<<num(n)+num(m)+num(k)<<endl;    }    return 0;}


原创粉丝点击