【C语言经典100例】-- 20 猴子吃桃问题

【C语言经典100例】-- 20 猴子吃桃问题,第1张

【C语言经典100例】-- 20 猴子吃桃问题 问题描述: 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 思路分析:

采取逆向思维的方法,从后往前推断。
1) 设x1为前一天桃子数,设x2为第二天桃子数, 则:
x2=x1/2-1, x1=(x2+1)*2
x3=x2/2-1, x2=(x3+1)*2
以此类推: x前=(x后+1)*2
2) 从第10天可以类推到第1天,是一个循环过程。

程序实现:
#include 
#include 
int main(){
    int day, x1 = 0, x2;
    day=9;
    x2=1;
    while(day>0) {
        x1=(x2+1)*2;  // 第一天的桃子数是第2天桃子数加1后的2倍
        x2=x1;
        day--;
    }
    printf("总数为 %dn",x1);
    
    return 0;
}
//利用天数
#include 
#include 

int main(void)
{
    // 已知第10天后,剩余的桃子为 1
    int iLeft = 1  ;             // 剩余的桃子数量 
    int iDay_N = 10;            //天数
    while( iDay_N > 1)
    {
        iLeft = (iLeft + 1) * 2;
        iDay_N = iDay_N -1 ;
    }

    printf( "在第%d天 剩余的桃子是%dn",iDay_N,iLeft); 
    // system("PAUSE");
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5713408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存