A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

漫漫

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

本帖最后由 漫漫 于 2014-7-19 08:52 编辑

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


5 个回复

倒序浏览
本帖最后由 istream 于 2014-7-17 23:16 编辑

1534个桃子
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int sum = 1;
  5.     for (int i = 0; i < 9; i++)
  6.     {
  7.         sum += 1;
  8.         sum *= 2;
  9.     }
  10.     printf("sum= %d\n", sum);
  11.     return 0;
  12. }
复制代码



回复 使用道具 举报
公务员考试里面有类似的题。
采取逆向思维的方法,从后往前推断。
  1. main()
  2. {
  3. int day,x1,x2;
  4. day=9;
  5. x2=1;
  6. while(day>0)
  7.  {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
  8.  x2=x1;
  9.  day--;
  10.  }
  11. printf("the total is %d\n",x1);
  12. }
复制代码
回复 使用道具 举报
我来看一下~
回复 使用道具 举报
从后往前推,初值为一,每次的值等于前一次的值加一再乘以二,循环10次。即可得到结果。
回复 使用道具 举报
  1. 这一题还是很久一段时间之前写,如果没记错的话应该是100道经典题目里面的。主要考得是算法设计,就是看你怎么想这个问题,如何让设计解决问题的思路。代码倒是挺容易的
  2. #include <stdio.h>

  3. int main(int argc, const char * argv[])
  4. {
  5.     // insert code here...
  6.     int n =1;

  7.    
  8.     for (int i =2; i<=9; i++)
  9.     {
  10.         n=(n+1)*2;
  11.     }
  12.    
  13.     printf("%d\n",n);
  14.     return 0;
  15. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马