<<剪绳子>>题解

题目描述:
一条绳子从中间剪一刀可以剪成两段绳子,如果对折(1)次,中间剪一刀可以剪出(3)段绳子,如果连续对折(2)次,中间剪一刀可以剪出(5)段绳子,那么,连续对折(n)次,中间剪一刀可以剪出多少段绳子?

通过编写程序,在给定绳子对折次数的情况下,计算出中间剪一刀后可剪出绳子的段数。

解题思路:

总结规律:
第一次对接时,可以把绳子头尾看作是连在一起的,这样绳子经过第一次对接后,成了一个圈,把这个圈一拉,成了两根对接绳子,中间剪断,左右一根。再把头尾分开,就是3根。按此推理:
对接1次:2的1次方是2+1
对接2次:2的2次方是4+1
对接3次:2的3次方是8+1
对接4次:2的4次方是16+1
对接5次:2的5次方是32+1

#include <bits/stdc++.h>

using namespace std;

/*
0折  ---- 2段绳子    2^n+1
1折  ---- 3段绳子
2折  ---- 5段绳子
3折  ---- 9段绳子
4折  ---- 17段绳子
n折
*/

int main() {
    int n;
    cin >> n;
    printf("%d", (int)pow(2, n) + 1);
    return 0;
}

扩展阅读:
一根绳子连续对折(N)次,从中剪(M)刀,就被剪成了(2^n * m +1)段。

原文地址:https://www.cnblogs.com/littlehb/p/14979853.html