郑州轻工业大学oj题解(c语言)1054(|郑州轻工业大学oj题解(c语言)1054: 猴子吃桃 倒推入门问题)

【郑州轻工业大学oj题解(c语言)1054(|郑州轻工业大学oj题解(c语言)1054: 猴子吃桃 倒推入门问题)】在前几周的作业里,同学们在做while类循环作业时,应该有接触过类似倒推的问题。问题内容是和这题一模一样的。

郑州轻工业大学oj题解(c语言)1054(|郑州轻工业大学oj题解(c语言)1054: 猴子吃桃 倒推入门问题)
文章图片
image.png 1054: 猴子吃桃

  • 题目描述
    悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
  • 输入
    输入一个数n(1<=n<=30)。
  • 输出
    输出第一天的桃子个数。
  • 参考代码:
#include int main() { int i,n,s; s=1; scanf("%d",&n); for(i=n; i>1; i--){ s=(s+1)*2; } printf("%d",s); return 0; }

  • 代码解析:
    对于解决倒推问题,我们先从题目入手,弄清已知量分别是什么。
    根据题目我们可以知道,最后一天,也就是第n天的时候,悟空的桃子还剩下一个。也就是初始值为1。根据题目,他每天吃掉前一天剩下的一半多一个。反过来说,前一天的桃子,是第二天的多一个的两倍。
    那么,我们在计算时,只要我们从第n天往回倒推,每少一天,则把桃子的数量先+1再*2,待天数=1时,就可以知道第一天的桃子个数。
本题在倒推题目中属于较为基础的一种,这里所教的代码只强调逻辑,不强调死记硬背,希望大家以后遇到同样或者类似的题目,能举一反三。灵活运用循环语句完成倒推。
  • 本题用while循环也可以完成,如果你可以做到,不妨把你的答案发到留言栏与大家一同分享与学习。

    推荐阅读