牛客算法周周练6 [青蛙过河]

牛客算法周周练6 青蛙过河

思路

其实这就是一道数学规律题,我们不难发现。

当只有荷叶的时候,我们最多只能由\((m + 1)\)个青蛙可以过河:\(m\)个青蛙先分别排类在荷叶上,然后再最后一个青蛙跳到目标石墩。

当存在一个石墩时,我们可以先让\((m + 1)\)个青蛙跳到上面,去,然后我们还能再荷叶上放\(m\)个青蛙,最后在目标点上能放一只青蛙,这里就得到\((m + 1) * 2\)只青蛙可以跳过。

以此类推,每一个石墩我们都如同只有两个石墩一样处理,所以石墩上我们可以放\(((1 << n) - 1) * (m + 1)\)只青蛙,最后的目标石墩我们还可以放\((m + 1)\)只青蛙,所以总共就是\((m + 1) * (1 << n)\)只青蛙。

代码

#include<bits/stdc++.h>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    cout << (m + 1) * (1 << n) << "\n";
    return 0;
}
posted @ 2020-05-13 16:02  lifehappy  阅读(282)  评论(0编辑  收藏  举报