标题:C++ 实例分享 《猴子吃桃》
只看楼主
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
结帖率:97.22%
 问题点数:0 回复次数:1 
C++ 实例分享 《猴子吃桃》
                    猴子吃桃

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;
第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,
小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

程序代码:
#include <iostream>

using namespace std;


int main()
{
    int day_peac[11]={0};

    for(int day=10; day>=1; day--)
        day_peac[day] = day>9 ? 1 : (day_peac[day+1] + 1) * 2;
    cout << endl<< "    第一天共摘的桃子数量为 "<<day_peac[1] <<"个." << endl;
    cout  << endl<< "    这是什么猴子呀??? 猪一天也吃不了 "<<day_peac[2]+2 <<"个桃子呀!!!"<< endl;
    return 0;
}



搜索更多相关主题的帖子: int 猴子 猴子吃桃 C++ 分享 
2022-07-13 01:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
设第i天剩余 x 颗,则第i天的前一天剩余 2*x+2 颗。
即 f(1)=x; f(i+1)=2*f(i)+2
故有 f(i) = x*2^(i-1) + 2^i-2

程序代码:
#include <stdio.h>

int main( void )
{
    // 已知:第i天剩余x颗
    const unsigned i = 10;
    const unsigned x = 1;

    // 则第一天采摘量: x*2^(i-1) + 2^i-2
    printf( "%u\n", x*(1u<<(i-1))+(1u<<i)-2 );
}
2022-07-13 08:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509549-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015222 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved