zoukankan      html  css  js  c++  java
  • 寒假过题水题——I

    I - 不容易系列之二

    由于徐老汉没钱,收费员就将他的羊拿走一半,看到老汉泪水涟涟,犹豫了一下,又还给老汉一只。巧合的是,后面每过一个收费站,都是拿走当时羊的一半,然后退还一只,等到老汉到达市场,就只剩下3只羊了。

    你,当代有良知的青年,能帮忙算一下老汉最初有多少只羊吗?

    • input

    输入数据第一行是一个整数N,下面由N行组成,每行包含一个整数a(0<a<=30),表示收费站的数量。

    • output

    对于每个测试实例,请输出最初的羊的数量,每个测试实例的输出占一行。

    • Sample Input

    2

    1

    2

    • Sample Output

    4

    6

    解题思路:

    递推关系很简单,就是am=(am-1 -1)*2

    初始条件 am=3;求a0,倒着递推就行。

    第一次尝试想用函数递归,后来发现没必要,直接用数组存储30个收费站的sheep个数就可以了。

    代码:

    #include

    using namespace std;

    /*int fun(int i) {

    int a[31];
    
    a[0] = 3;
    
    a[i] = (fun(i - 1) - 1) * 2;
    
    return a[i];
    

    }*/

    int main()

    {

    int n,m;
    
    int a[31];
    
    cin >> n;//实例个数
    
    while (n--) {
    
        cin >> m;//收费站个数
    
        a[m]=3;//最后一次过收费站sheep的个数是3
    
        while (m > 0) {
    
            a[m - 1] = 2 * (a[m] - 1);//上一站sheep个数是本站-1之后的2倍(递推关系)
    
            m--;//最后一次循环m值为1,得到的是a[0],之后m--变成0
    
        }
    
        cout <<a[0]<< endl;//所求a[0]是最初sheep的个数
    
        }
    
    return 0;
    

    }

  • 相关阅读:
    Qt使用第三方库3rdparty
    Qt5.5以来对Network的改进(包括对SSL的功能支持,HTTP的重定向等等)
    ddd
    C# ICSharpCode.SharpZipLib
    OWIN
    C#/.NET code
    ABP启动配置
    Oracle表空间及分区表
    Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
    WebAPI使用多个xml文件生成帮助文档
  • 原文地址:https://www.cnblogs.com/koukouStar/p/14535003.html
Copyright © 2011-2022 走看看