猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。
。
//理清关系:数学归纳S(n-1)=(Sn + 1)*2
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> int main(void) { int prev_day_count; int cur_day_count = 1; for (int i = 0; i <9; i++) { prev_day_count = (cur_day_count + 1) * 2; cur_day_count = prev_day_count; } printf("total count : %d\n", cur_day_count); return 0; }
#include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> int main() { int sum=1; for(int i=0;i<9;i++) { sum=(sum+1)*2; } printf("%d",sum); }
答案解析: 从题面上来看,可以推...
用户登录可进行刷题及查看答案
答案解析: 从题面上来看,可以推出,后一天的桃子数量 = 前一天桃子数量 / 2 - 1。所以,该公式也可以写成前一天的桃子数量 = (后一天桃子数量+1) * 2。所以我们知道了第10天剩余桃子的数量,则可以依次推算出桃子的前一天桃子的总数。需要注意的点,猴子只是吃了9天,所以,我们只需要遍历9次就可以了。
#include <stdio.h> int main() { int day = 9; int prev_day_count; int cur_day_count = 1; while (day > 0) { prev_day_count = (cur_day_count + 1) * 2; cur_day_count = prev_day_count; day--; } printf("total count : %d\n", cur_day_count); return 0; }
登录后提交答案