C#中一道关于猴子吃桃的问题

JavaScript06

C#中一道关于猴子吃桃的问题,第1张

思路:

 // day[i] 表示每天剩下的桃子数

            // taozi_sum 表桃子总数

            int day0 = taozi_sum 

            int day1 = taozi_sum / 2 - 1

            int day2 = day1 / 2 - 1

            int day3 = day2 / 2 - 1

            int day4 = day3 / 2 - 1

            int day5=  day4 / 2 - 1

            int day6 = day5 / 2 - 1

            int day7 = day6 / 2 - 1

            day7 = 1

// 把猴子吃桃看做8天干的,第0天表示桃子总数

                int[] day = new int[8]

                for (int i = 7 i > 0 i--)

                {

                    if (i == 7)

                    {

                        // 第7天吃了之后,再扔掉一个坏的,最后剩1个

                        day[i] = 1 

                    }  

                    // 依次循环

                    day[i - 1] = 2 * (day[i] + 1)

                }

                // 桃子总数取第0天的

                int sum = day[0]

            }             

详解:

// 把猴子吃桃看做8天干的,第0天表示桃子总数

                int[] day = new int[8]

                // 从第7天开始循环,因为只知道第七天剩下的桃子数

                // 个人理解是猴子第7天吃了之后,再扔掉一个坏的,最后剩1个

                // 如果您有其他理解,下面可以自己改下

                for (int i = 7 i > 0 i--)

                {

                    if (i == 7)

                    {

                        // 第7天吃了之后,再扔掉一个坏的,最后剩1个

                        // 也就是第7天只剩1个桃

                        day[i] = 1 

                    }  

                    // 依次循环

                    // day[6]第6天

                    // day[5]第5天

                    // day[4]第4天

                    // day[3]第3天

                    // day[2]第2天

                    // day[1]第1天

                    // day[0]第0天

                    day[i - 1] = 2 * (day[i] + 1)

                }

                // 桃子总数取第0天的

                int sum = day[0]

我做过的练习。

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

#include "stdio.h"

main()

{

int sum=1,i

for(i=0i<=9i++)

sum=(sum+1)*2

printf("猴子共摘了%d个桃子。\n",sum)

}

如果真是吃到了第10天,我想说这TMD还是猴子吗?第一天就会撑死!

C代码在线运行工具

#include <stdio.h>

 

int main()

{

    int day = 10

    int sum = 0

    int i = 0

     

    sum = 1

    for (i = day i >= 1 i--)    //吃之后算法

    {

        sum = (sum + 1) * 2

    }

    printf("第 %d 天吃之后还剩1个,最初有 %d 个桃子,", day, sum)

    printf("第 1 天吃了 %d 个桃子;\r\n", sum / 2 + 1)

     

    sum = 1

    for (i = day-1 i >= 1 i--)  //吃之前算法

    {

        sum = (sum + 1) * 2

    }

    printf("第 %d 天吃之前还剩1个,最初有 %d 个桃子,", day, sum)

    printf("第 1 天吃了 %d 个桃子。\r\n", sum / 2 + 1)

     

    return 0

}

第 10 天吃之后还剩1个,最初有 3070 个桃子,第 1 天吃了 1536 个桃子;

第 10 天吃之前还剩1个,最初有 1534 个桃子,第 1 天吃了 768 个桃子。