hdu 2175

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2175

题意:中文。

mark:递归算一下就可以了。n个盘子前2^(n-1)-1次是移动n-1个盘子的操作,第2^(n-1)是移动最大那个盘子,后面又是n-1个盘子的操作。

代码:

# include <stdio.h>


long long dfs(long long n, long long m)
{
long long mid = (1LL<<(n-1)) ;
if (m == mid) return n ;
if (m < mid) return dfs(n-1,m) ;
return dfs(n-1,m-mid) ;
}


int main ()
{
long long n, m ;
while (~scanf ("%I64d%I64d", &n, &m), (n||m))
printf ("%I64d\n", dfs(n, m)) ;
return 0 ;
}



posted @ 2012-02-02 12:29  Seraph2012  阅读(149)  评论(0编辑  收藏  举报