// 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 个桃子。