HDU4112


對於n*m*k的方塊,用手掰成1*1*1的那麼搜需要的步驟是固定的,爲n*m*k-1,如果用刀切,因爲可以把多塊疊在一起切,所以對於長度爲n的,將他切成0,所需要的步驟數位k
滿足n/2^k=1即n=2^k,等式兩邊取對數,logn=k*log2,所以k等於logn/log2
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
	__int64 i,j,n,m,k;
	__int64 cas=0;
	__int64 t;
	scanf("%I64d",&t);
    while(t--)
	{
		scanf("%I64d%I64d%I64d",&n,&m,&k);  
        __int64 ans1=n*m*k-1;  
        __int64 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",++cas,ans1,ans2);  

	}
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章