题意:类似汉诺塔问题,但是需要分析细节。
题解: 荷叶数为,石墩数为
,那么最多先个到荷叶,第个到终点。
,那么最多个到荷叶和石墩,然后荷叶上的个再到石墩。情况转换为的情况,两者相加即
,那么最多先个到荷叶和石墩1,然后荷叶上的到石墩1,之后再有个到荷叶和石墩2,然后这个到石墩1。情况转换为了的情况,两者相加为。注意:此时不能先有个到石墩1和石墩2,然后都到石墩1,之后再有个到石墩2和荷叶,再到石墩1,这样的话即使后面可以按照的情况走下去,但是因为全程要符合青蛙的高低顺序,那么就要使得石墩1的最面的青蛙解放,但是解放时,只能给最上面的个释放到石墩2,然后只剩个石墩+荷叶但是有个青蛙,无法释放最底的青蛙,故不行。
那么通式就是.


代码:

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n, m;
int main()
{
    scanf("%lld%lld", &n, &m);
    printf("%lld\n", (1ll << n) * (m + 1));
    return 0;
}