#include <stdio.h>
#define N 65
unsigned long long bit[N] = {1};
void cal_bit()
{
for(int i = 1; i < N; ++i)
bit[i] = bit[i-1] << 1;
}
unsigned long long dp[N] = {0,1};
void cal_dp()
{
cal_bit();
int i,j;
for(i = 2; i < N; ++i)
{
dp[i] = bit[i] - 1;
for(j = 1; j < i; ++j)
if( 2 * dp[i-j] + bit[j] - 1 < dp[i])
dp[i] = 2 * dp[i-j] + bit[j] - 1;
}
}
int main()
{
cal_dp();
int a;
while(scanf("%d",&a) != EOF)
printf("%lld\n",dp[a]);
return 0;
}
hdu 1207 汉诺塔2
最新推荐文章于 2019-06-04 21:28:51 发布